我的思路是:
1.设定一个布尔数组,所有值赋为真
2.设定三个累加器 s、j、b ,s 用来报数,j用来循环、联系头和尾,b用来统计圈内剩余人数
3.出圈的赋为假,输出圈中为真的元素。
代码如下,是按照思路写的,但是有问题,不曾能找的出来。
#include<iostream>
#include<cstdlib>
using namespace std;
int a[100];
int main()
{
int m,n;
cin >>m>>n;
int b;
int s=1;
int i;
int j=1;
b=m;
for(i=1;i<=m;i++)
a[i]=1;
do {
if (a[j]==1)
s++;
if (s==n)
{
a[i]=0;
s=1;
b--;
}
j++;
if (j=n+1)
j=1;
}while(b==1);
for (i=1;i<=m;i++)
if (a[i]==1)
{
cout <<i;
break;
}
system("pause");
return 0;
}
1.设定一个布尔数组,所有值赋为真
2.设定三个累加器 s、j、b ,s 用来报数,j用来循环、联系头和尾,b用来统计圈内剩余人数
3.出圈的赋为假,输出圈中为真的元素。
代码如下,是按照思路写的,但是有问题,不曾能找的出来。
#include<iostream>
#include<cstdlib>
using namespace std;
int a[100];
int main()
{
int m,n;
cin >>m>>n;
int b;
int s=1;
int i;
int j=1;
b=m;
for(i=1;i<=m;i++)
a[i]=1;
do {
if (a[j]==1)
s++;
if (s==n)
{
a[i]=0;
s=1;
b--;
}
j++;
if (j=n+1)
j=1;
}while(b==1);
for (i=1;i<=m;i++)
if (a[i]==1)
{
cout <<i;
break;
}
system("pause");
return 0;
}