『每日一題 2012-02-10』猴子選大王問題 C語言實現
問題描述:
辦法如下:猴子按1,2,。。。,n編號圍坐一圈,從第一隻開始,按1,2,。。。,m報數,報m的退出,從下一隻開始,繼續循環報數,剩下的最後一隻猴子就是大王,編程輸出大王的序號。
程序實現:
#include <stdio.h>
#define NUMBER_OF_MONKEY 9 //猴子數目
#define M 3 //報數時的最大數字
int main()
{
int i=0,postion=-1,num=NUMBER_OF_MONKEY;
int monkey[NUMBER_OF_MONKEY];
for (i=0;i<NUMBER_OF_MONKEY;i++)
{
monkey[i]=1; //為1時,表示猴子有權利競選
}
while(num>1)
{
i=0;
while (i<M)
{
postion=(postion+1)%NUMBER_OF_MONKEY;
if (1==monkey[postion])
i++;
}
printf("第%d隻猴子被淘汰\n",postion+1);
monkey[postion]=0;
num--;
}
for (i=0;i<NUMBER_OF_MONKEY;i++)
{
if (1==monkey[i])
{
printf("獲勝的是第%d隻猴子",i+1);
}
}
printf("\n");
}
最後更新:2017-04-02 22:16:20