// 练习.cpp : 定义控制台应用程序的入口点。
//约瑟夫环问题,其实类似的题很多解法不尽相同。
//说有n只猴子,围成一个圈圈,从第一只猴子开始报数,由1-m,第m个人淘汰,也可以说杀掉,
//然后从第m+1个开始重头查数,到第n只猴子后又会从第一个开始查,直至剩下最后一个猴子,
//我们尊称为“活着的猴王”。
#include "stdafx.h"
#include <iostream>
using namespace std;
int MonkeyKing(int total, int cycle)//定义一个函数,输入total为猴子总数,cycle为报的数,
//最后返回剩下猴子的位置,即数组的下标
{
/*这个函数的思想:
1、把这total只猴子放到一个数组中monkey_s[total],每个元素为一个猴子,里面的值为
猴子的状态,true是活着,false是死了。
2、然后从头即第一个元素monkey_s[0]开始查看猴子是否活着,活着的话就查数从1到m的查,
查到m,拉出去杀了,标识为false。
3、后续的猴子继续查,到达第n个猴子后再从第一个猴子查。(死猴子不会查数)*/
bool *monkey_s = new bool
《小程序》关于约瑟夫环猴王的问题
最新推荐文章于 2021-05-18 00:14:58 发布