</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;
}
}
}
Joseph圆圈报数问题解法
最新推荐文章于 2023-10-05 06:00:00 发布