
#include
#include
#include
void monkey(int, int, int);
int main(void)
{
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++)
{
int n, m, p;
scanf("%d %d %d", &n, &m, &p);
monkey(n, m, p);
}
return 0;
}
void monkey(int n, int m, int p)
{
int *ar = (int *)malloc((n + 1)*sizeof(int));
memset(ar, 0, n + 1);
int out =n;
int now = p - 1;
while (out-1)
{
int i;
for (i = 1; i <= m; i++)
{
if (now + 1 > n)
now = 1;
else
++now;
if (ar[now])
--i;
if (!(ar[now]) && i == m)
ar[now] = 1;
}
--out;
}
printf("%3d\n", now);
free(ar);
}
请大家看看这个程序错在哪。谢谢。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
S_一方通行_S 2015-06-16 08:10关注int i=0;
while( i<N)//这地方刚打错了,应该看得出
{
if(mon[p++])//猴子数组都初始化为1,首次报数为真
i++;本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报