您的位置:首页 > 其它

有趣的程序-2011年09月15日(原创+转载)

2011-09-15 19:47 204 查看
出圈问题:出圈,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
;

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;//表示这个人已经出圈了

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: