约瑟夫问题(java 版)

来源:互联网 发布:苏州中学 知乎 编辑:程序博客网 时间:2024/06/05 18:46
class A { // private int k = 0; private String str = ""; int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; final private int interal = 9; final private int number = 30; final private int resultNum = 15;  public A() {  }  public A(String str) {  this.str = str; }  void doit() {  Vector vv = new Vector();  for (int i = 0; i < number; i++) {   vv.addElement(new Integer(i + 1));  }  while (vv.size() != resultNum) {   removeNum(vv);  }  System.out.println(vv);  StringBuffer sb = new StringBuffer();  for (int i = 0; i < number; i++) {   if (!vv.contains(new Integer(i + 1))) {    sb.append("X");   } else {    sb.append(i + 1);   }   sb.append(" ");  }  System.out.println(sb.toString()); }  private void removeNum(Vector left) {  Vector newArr = new Vector();  int rem = 0;  for (int i = 0, k = 1; k <= interal; i++, k++) {   if (i == left.size()) {    i = 0;   }   if (k == interal) {    rem = i;    break;   }  }  left.remove(rem);  for (int i = 0; i < rem; i++) {   newArr.addElement(left.elementAt(0));   left.remove(0);  }  for (int i = 0; i < newArr.size(); i++) {   left.addElement(newArr.elementAt(i));  } }}