无论对于那个行业来说,算法也是非常重要的一个方面。于是决定从此记录下关于算法的点点滴滴。
问题:有n个人围成一圈,顺序编号,从第1个开始报数(从1~m报数),凡是报到m的人退出圈子,问最后留下来的那位是第几号的那位:
#include <iostream>
using namespace std;
int main()
{
int n,m;//人数与报的数
cin>>n;
cin>>m;
int a[n+1];
for(int i=1;i<=n;i++)//初始化赋值为1
{
a[i]=1;
}
int p=0;
while(1)
{
int o=0;
for(int i=1;i<=n;i++)//判断有几个为1(即还剩下几个人),一个人的话就退出
{
if(a[i]==1)
o++;
}
if(o==1)
break;
for(int i=0;i<=n;i++)
{
//int op=0;
if(a[i]==1)
p++;
if(p==m)//当计数到为m时,将其对应的值变为零
{
p=0;
a[i]=0;
}
}
}
for(int i=0;i<=n;i++)
{
if(a[i]==1)
{
cout<<"恭喜 :"<<i<<endl;//输出最后剩下的那个人对应数组键值
break;
}
}
return 0;
}