出圈问题:出圈,n个围成一圈,数到第m个人出圈,再从m个人的下一个人数,依次循环。并打印出出圈的人。
public class Ysf{
public static void main(String[] args){
int n=10,m=2;
int outNum=0;
int tmp=m;
int index=0;
boolean countOne=false;
int a[]=new int[n];
for(int i=0;i<a.length;i++)
{a[i]=i+1;}
while(outNum<n){//出圈的人数小于总人数
tmp=m;
while(tmp>0){//还没数到m
countOne=false;
while(!countOne){//数一个有效的人
if(a[index]!=-1){//如果这个人没有出圈,则这个计数有效,否则跳过这个人,直到数到下一个有效的人。
countOne=true;
}
index+=1;
if(index>n-1)
index=index-n;
}
tmp--;
}
index-=1;//因为数到有效的人后,index仍然自增了,所以要-1,确定出圈的人。
if(index<0)
index=n-1;
System.out.println(""+a[index]);
outNum++;
a[index]=-1;//表示这个人已经出圈了
}
}
}
本文详细阐述了一个出圈问题的Java解决方案,包括初始化数组、循环遍历和判断出圈逻辑,通过实例代码展示了如何在Java中实现这一逻辑。
827

被折叠的 条评论
为什么被折叠?



