⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 我做的一些C语言练习题,里面一共有76道题目,主要用到一些计算机常用的算法,如:递归,分治,动态规划,回溯法,AO算法等,除此之外还用到比较多的数学知识,我做了一部分,还有一些暂时还没做出来,大家也帮
💻 CPP
字号:
/*************************************************************************************

  36. 猴子选大王:
   ① N 只猴子站成一行,每隔 M 只从头到尾报数,反复进行,报过数的退出,打
 印每次退出的猴子的编号,直到剩下一只为止。
   ② N 只猴子站成一行,每 M 只报数。先从头到尾,报到尾后,再返回从尾到头
 报数,打印每次方向及过程,直到剩下二只时,以排到后面的(指报数方向)为大王。
   ③ N 只猴子围成一圈,从第 P 个开始,每隔 M 只报数,打印每次过程,只剩下
 一个时为大王。

  ***********************************************************************************/

#include <stdio.h>
#include <malloc.h>

void main()
{
	int *monkey;
	int i,k,counter=0;
	int N,M;
	printf("请输入猴子的个数N和报数相隔M:\n");
	scanf("%d%d",&N,&M);
	monkey = (int*)malloc(N*sizeof(int));
	for(i=0; i<N; i++)
		monkey[i] = 1;
	i=0; k=0;
	while(counter != N-1)
	{
		if(monkey[i])
		{
			if((++k)%M == 0)
			{
				monkey[i] = 0;
				counter++;
			}
		}
		if(++i==N)
			i=0;
	}
	for(i=0; i<N; i++)
	{
		if(monkey[i])
		{
			printf("%d\n",i);
			break;
		}
	}
	free(monkey);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -