`

猴王选举

阅读更多

n 个猴子参加猴王选举,按照 m 进行循环报数。数到 m 的猴子被淘汰,  直到剩余最后一个猴子变为大王。

#include "stdafx.h"
#include <stdio.h>
#include <iostream>

#define KICK  2
int findKing(int monkeyNum, int round)
{
	int *arr = (int*) malloc(sizeof(int) * monkeyNum);
	int count = 0;
	int i = 0;
	while(true)
	{
		// N step forward
		for(int j =0; j+1 <round; j++)
		{
			while(KICK == *(arr + i%monkeyNum))
			{
				i++;	
			}
			i++;
		}

		//make sure it's not kick out
		while(KICK == *(arr + i%monkeyNum))
		{
			i++;
		}

		//then kick out it
		if (KICK != *(arr + i%monkeyNum))
		{
			std::cout << "kick out:" << i%monkeyNum <<std::endl;
			*(arr + i%monkeyNum) = KICK;
			count ++;
			i++;
		}

		// if there is only one left
		// show it's position
		if (count + 1 == monkeyNum)
		{
			while(KICK == *(arr + i%monkeyNum))
			{
				i++;
			}
			return i%monkeyNum;
		}
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	std::cout << "the king is :" << findKing(100,4);
	int i;
	std::cin >>i;
	return 0;
}
 
分享到:
评论

相关推荐

    猴王问题源代码

    猴王问题源代码,C语言书写,可直接运行。绝对值得下载

    改选美猴王代码c++

    自动报数,报3的自动退出,当猴子数小于3时,报1的为猴王

    猴子选大王

    //④猴王选举,并输出猴王; Check(head, m); return 0; } //编译生成链表子函数,这里采用*Ge,Ge和形参指向相同的地址,修改后面的有效; //另外Ge可以修改为别的地址,而不影响形参的指向。 Monkey *Create(int...

    五年级语文上册 第六单元 27《猴王出世》课堂习题 冀教版-冀教版小学五年级上册语文试题.doc

    石猴的智慧、勇气和自信在他的言行中体现得淋漓尽致,比如他主动提出进入水帘洞探路,成功后又提出以信守承诺为原则选举猴王,展现了他的领导才能和果断决策。 在学习古代白话文时,理解文中的生字词至关重要。例如...

    福建师大Java作业1

    猴子选猴王是一种选举机制,每次淘汰票数最少的猴子,直到只剩下一只猴子为止。这个问题可以通过模拟选举过程来解决,使用优先队列(最小堆)来快速找到票数最少的猴子,并进行淘汰。 ```java import java.util....

    所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号

    这个问题是经典的计算机科学中的算法问题,通常称为"约瑟夫环"或"约瑟夫问题"(Josephus Problem)。在这个问题中,猴子们按照一定的规则淘汰,最终剩下的一个被选为大王。题目中给出了四种不同的解决方案,分别使用...

    java 求水仙花 和猴子选大王

    这是一个基于数组操作的经典算法问题,也被称为“猴子选大王”或“猴子选举”。假设有一群猴子,每轮它们通过抛硬币决定生死,最后剩下的那只就是大王。如果数组中的元素代表猴子,每一轮我们移除数组中的一个元素...

    猴子选大王问题(约瑟夫问题).docx

    《猴子选大王问题(约瑟夫问题)的C++实现》 约瑟夫问题,又称猴子选大王问题,是一种著名的理论问题,通常在计算机科学中被用来讲解数据结构和算法。这个问题描述如下:一群编号从1到m的猴子围成一圈,从第1号开始...

    数据结构 猴子选大王算法

    在实际应用中,猴子选大王算法可以应用于解决一些与选择问题相关的算法问题,例如选举、排序、搜索等。该算法的思想也可以应用于解决一些其他类型的问题,例如图论、动态规划等。 猴子选大王算法是一种重要的数据...

    争夺董事会权力实战手册之控制权之争.doc

    然而,提案的时间、内容和程序必须符合相关规定,否则可能导致纠纷,如“猴王”股东大会的临时提案风波。 提案权的行使有时会遇到分拆提案的效力问题,如“申华实业”案例中,完整提案被拆分,导致选举结果出乎意料...

    河南省上蔡县第一初级中学2020学年八年级生物期中试题(无答案).doc

    问题5提到的猴群选举猴王体现了社会等级的存在,而问题19进一步解释了动物社会行为的特征,包括群体内部的组织、成员之间的分工以及可能存在的等级制度。 【知识点六:哺乳动物的特征】 哺乳动物的主要特征在问题6...

    数据结构之猴子要选大王

    猴子要选大王,选举方法如下:所有猴子按1,2,……,m编号并按照顺序围成一圈。从第一个开始数,每数到第n个,该猴子就跳出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。m和n由键盘输入,打印出...

    猴子选王程序

    游戏规则是按照顺时针方向报数,每次报数到指定数字(例如3)的猴子将被淘汰出局,剩下的猴子继续游戏,直到最后只剩下一只猴子,这只猴子就是“猴王”。 #### 二、C语言中的数组与指针运用 ##### 2.1 数组初始化 ...

Global site tag (gtag.js) - Google Analytics