本帖最后由 caolufo 于 2016-8-3 15:33 编辑
Java实现约瑟夫环:50个人围成一圈数数,数到3的人退出,求最后剩下的人的编号.终于改成通用版的(借用Boolean变量标识):[Java] 纯文本查看 复制代码
public class Test9 {
public static void main(String[] args) {
baoshu(50,3);
baoshu(100,14);
}
/** * 报数方法
* @param n 总人数
* @param m 报到数m的人出列
*/
public static void baoshu(int n, int m) {
//定义数组变量标识某人是否还在圈内,初始值为true
boolean[] flags=new boolean[n];
for (int j = 0; j < flags.length; j++) {
flags[j]=true;
}
int countNum=0;//定义报的数
int index=0; //定义索引
int inCount=n; //定义在圈内的人数
while(inCount>1){
if(flags[index]){
countNum++;
if (countNum==m) { flags[index]=false;
inCount--;
countNum=0;
}
}
index++;
if (index==n)
index=0;
}
for (int i = 0; i < flags.length; i++) {
if (flags[i]) {
System.out.println("留下的是第"+(i+1)+"个人");
}
}
}
}
|