题目:
已知n个人(以编号1,2,3--n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人有出列;以此规律重复下去,知道圆桌周围的人全部出列。输出出列顺序和最后剩下的人。
分析:
这道题用我们平常的数组也能做,只不过要用到那个取模,
上代码:
#include <iostream>
using namespace std;
int main(void)
{
int n,p=0,m,k=0;
cin>>n>>m;
int arr[n];
for(int i=0;i<n;i++)
{
arr[i]=i+1;
}
while(n>1)
{
p=(p+m-1)%n;
cout<<++k<<" "<<arr[p]<<endl;
for(int j=p+1;j<n;j++)
{
arr[j-1]=arr[j];
}
n--;
if(p==n) p=0;
}
cout<<"最后剩下的是"<<arr[p]<<endl;
return 0;
}
最后一次更新于2022-02-11
0 条评论