思路:首先举个例子:当N = 5 时
1 2 3 4 5
3
3
3
3
输出4
请观看代码
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int count = 0;
int z = 0;
char arr[1002] = { '\0'}; arr是每个猴子的编号
scanf("%d",&n);
if( n == 1 )
{
printf("1\n");
return 0;
}
count = n;
for( i = 1 ; i <= n ;i++)
{
arr[i] = '1'; 将每个猴子的编号赋为1 , 当报到的猴子赋为0
}
i = 0;
while( 1 )
{
z++;
i++;
if( z % 3 == 0 && arr[i] == '1')必须是未被淘汰的猴子
{
arr[i] = '0';
z = 0;
count--;
if( count == 1 )
{
for( i = 1 ; i <= n ;i++)
{
if( arr[i] == '1')
{
printf("%d\n",i);
return 0;
}
}
}
}
else if( arr[i] == '0')
{
z--;
}
if( i == n )
{
i = 0;
}
}
return 0;
}