有趣的程序-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;//表示这个人已经出圈了
}
}
}
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;//表示这个人已经出圈了
}
}
}
相关文章推荐
- .net一般处理程序ashx生成验证码(原创+转载)
- 原创一些+转载网友的诗歌。。。蛮有趣!
- Angular系列----AngularJS入门教程00:引导程序(转载)
- 一个有趣的程序——可以打印自己第N行代码的程序
- 让所有正向程序实现反向连接【转载】
- (原创)C++11改进我们的程序之简化我们的程序(六)
- 本人原创请勿转载!
- 程序设计模式的有趣解释-追MM [转贴]
- inline与const与extern辨析(辨析性质的笔记,原内容是转载,笔记是原创)
- 本地连接状态 属性按钮消失 解决过程(DCOM配置问题)(原创*转载留名)
- Visual C#.Net 网络程序开发(转载)
- [转载+原创] matlab对个界面之间参数的传递
- VC++实现程序重启的方法(转载)
- 转载:程序内存分配 堆栈
- 各种排序算法及其java程序实现(转载)
- 转载:有趣的linux命令
- QT+OPENCV视频采集 (原创,转载请标记!)
- 【原创】C#通用权限管理-程序安全检查,这些你一定要考虑到位
- [转载]如何用C#语言构造蜘蛛程序
- (转载)展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告----大家猜原创是谁?