一道JAVA考试题 求解

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:59:30
题的大概意思是:100个人站一圈,各代表一个数字,从1到100。然后从第一个人开始查起,每查到第7个人的时候就踢掉那个人。一直循环查最后只能剩一个。用JAVA代码求出最后那个人的号码。
第一轮 1 2 3 4 5 6 “7”被踢 然后14 21 。。。98 5 。。
请高手帮帮我 谢谢
我也写了 不过总会在细节出现问题 所以想求一段准确的代码 参考下

int i,j,current=-1;
boolean flag[];
flag=new boolean[100];
for(i=0;i<100;i++) flag[i]=true;
for(i=0;i<100;i++){
//这里也错了,改为for(i=0;i<99;i++)
for(j=0;j<7;j++)
do{
++current;
if(current>=100) current-=100;
} while(flag[current]);
//这句错了,改为while(!(flag[current]));
flag[current]=false;
}
for(i=0;!flag[i];i++);
//这里加一句
System.out.println(i+1);//这也改了
-------------------
不好意思,写错了,难怪死循环。
-------------------
中间加一句还可以输出被踢的顺序
最后剩下的是50,我想这题该不会有什么诀窍吧?

思想
其实是一个循环队列
你每到本世7就吧他删了,继续就是了.
代码,还是你自己想想好,那样你就厉害了,进步了.
我觉得楼主先想清楚思路,然后还是自己写,我想那样你会大有长进,知道如何思考和解决问题了。这个不是太难的。