约瑟夫环 数组实现

 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

 

///数组解决
#include<iostream> using namespace std; int main() { int n,m,s=1; while (cin>>n>>m) { int a[10000],i=0,num,k; for(i=0; i<n; i++) a[i]=i+1; i=0;///第几个人 num=0;///被淘汰的人的数量 k=0;///计数 while(num<n-1) { if(a[i] !=0) k++;///计数 if(k==m) { a[i]=0;///标记为被淘汰的人 num++;///被淘汰的人的数量加一 k=0; } i++; if(i==n)///当到最后一个时重置,从头再循环 i=0; } for(i=0; i<n; i++)///遍历,输出剩下的那个人的编号 if(a[i] !=0) cout<<a[i]<<endl; } return 0; }

 

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务