Joseph圆圈报数问题解法

来源:互联网 发布:java 代码生成器 编辑:程序博客网 时间:2024/06/04 18:35
</pre><pre name="code" class="cpp">#include<iostream.h>void main(){int n1,n,m,i,t,h=0,j=-1,a[100]={0};cout<<"请输入小朋友个数n:"<<endl;cin>>n;cout<<"请输入报数值m:"<<endl;cin>>m;n1=n;for(i=1;i<=n;i++){//初始化数组a.a[i-1]=i;}while(1){int count1=0;while(1){//找出第m个出列的小朋友j++;count1++;if(j==n)j=0;if(count1%m==0)break;}n--;//每次出列一个,剩下的小朋友 总数-1.h++;cout<<"第"<<h<<"个出列的是"<<a[j]<<endl;a[j]=0;//出列的小朋友记作0.for(int p=0,q=0;p<n1;p++){//这个for的功能是:将非0的数字向左靠拢.if(a[p]!=0){t=a[q];a[q]=a[p];a[p]=t;q++;}}j--;//控制j,具体实现画图即可知.if(a[1]==0){//到最后,数组a只会有a[0]!=0.cout<<"最后留下的是:"<<a[0]<<endl;break;}}}


0 0
原创粉丝点击