閱讀483 返回首頁    go 阿裏雲 go 技術社區[雲棲]


『每日一題 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

  上一篇:go C#自定義泛型
  下一篇:go C++學習建議2