猴子选大王

作者在 2011-05-16 23:27:12 发布以下内容
n只猴子要选大王,选举办法如下:所有猴子按1,2,...,n编号围成一圈,从第1号开始按1,2,...,m报数,反报m号的退出圈外,如此循环报数,直到圈外剩下一只猴子时,这只猴子就是大王。n和m由键盘输入,打印出最后剩下的猴子号。编写一个程序实现上述函数。
#include<stdio.h>
typedef  int MAXSIZE[100];
main (){
    MAXSIZE a;
    int m, n, i, count=0, d=0;//d用来记录退出圈外的猴子的数目
    do{
        printf("Please input m and n:\n");
        scanf("%d,%d",&n,&m);
    }while (n<=m);
    for (i=0; i<n; i++)
        a[i]=i+1;
    while (d<n)
    for (i=0; i<n; i++)
     if (a[i]!=0){
       count++;                  //报一次数
       if (count==m)             //第i个猴子退出
       {
             printf ("%d\n",a[i]);
             a[i]=0;
             count=0;
             d++;
       }
     }
     printf ("退出圈外的猴子数目:%d\n",d);
}
文章评论,共2条
laznrbfe
2011-05-29 09:25
1
要是我早点看~我就可以更轻松的取得初赛资格了~
kemoo
2011-06-04 11:15
2
呵呵
游客请输入验证码