//<span style="white-space:pre"> </span>方法一:
// /**** 初始化人员 ***/
// boolean[] per = new boolean[n];// boolean数组表示站成一圈的人,false表示退出
// for (int i = 0; i < per.length; i++) {
// per[i] = true;
// }
//
// /**** 报号 ***/
// int t = 0, len = per.length;
// while (len > 1) {
// for (int i = 0; i < per.length; i++) {
// if (per[i]) {
// t++;
// if (t == 3) {
// t = 0;
// per[i] = false;
// len--;
// }
// }
// }
// }
//
// /***** 结果 *****/
// System.out.println("最后的情况:" + Arrays.toString(per));
// for (int i = 0; i < per.length; i++) {
// if (per[i]) {
// System.out.println("留下来的人原来的编号为:" + (i + 1));
// }
// }
//<span style="white-space:pre"> </span>方法二:
boolean[] person = new boolean[n];
for (int i = 0; i < person.length; i++) {
person[i] = true;
}
int numPerson = person.length;
int count = 0;
while (numPerson > 1) {
for (int i = 0; i < person.length; i++) {
if (person[i]) {
count++; //报数
if (count == 3) {
count = 0;
person[i] = false;
numPerson--;
}
}
}
}
System.out.println("the result of array is " + Arrays.toString(person));
for (int i = 0; i < person.length; i++) {
if (person[i]) {
System.out.println("the original order number is " + (i + 1));
}
}
}