问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

猴子选大王

发布网友 发布时间:2022-04-18 20:47

我来回答

4个回答

懂视网 时间:2022-04-19 01:08

今天来实现一个约瑟夫环算法,下面是一道新浪的面试题:

m只猴子围坐成一个圈,按顺时针方向从1到m编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到n的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:

(1)要求由用户输入开始时的猴子数m、报数的最后一个数n。

(2)给出当选猴王的初始编号。


这道题是典型的约瑟夫环问题,“猴子选大王”问题。

注意:本实例在python2.7下测试通过,未在python3下测试,有兴趣的同学可以到群里交流

直接上代码:

#!/usr/bin/python
# coding=utf-8
# 约瑟夫环算法 之 猴子选王 问题
 
def king(m,n):
 dd = {}
#生成一个字典
 p = 1
 while(p<=m):
 dd[p] = p
 p = p+1
  
 j = 1
 while(len(dd) >1):
 for k,v in dd.items():
  if(j == n):
  del dd[k]
  j = 1
  else:
  j = j+1
 return dd
 
print king(6,2)

注意:这里用到了字典,而不是list。主要是因为这样可以利用字典的索引的优势

热心网友 时间:2022-04-18 22:16

有M只猴子围成一圈,每只各一个从1到M中的编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到N的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M、N,编程计算哪一个编号的猴子成为大王

#i nclude<iostream.h>

int choose(int num,int del)
{
int i;
int a[100];
for(i=0;i<num;i++)
a[i]=1; //猴子状态初始化,为1表示可能被选上,为0表明没希望了;

int sum=0, //循环记数;
countOne=num; //累积记数初始化,大于1表明还有大王候选人;

while(countOne>1)
{
countOne=0;
for(i=0;i<num;i++)
{
sum+=a[i];
if(sum==del)
sum=a[i]=0; //淘汰倒霉猴子;
countOne+=a[i];
}
}

for(i=0;i<num;i++)
if(a[i]!=0)
return i; //找到幸运猴子编号(从0开始的);
}

void main()
{
int num,del;
cout<<"请输入猴子总数和淘汰数:";
cin>>num>>del;
cout<<"第"<<choose(num,del)+1<<"个猴子为王!"<<endl;
}

热心网友 时间:2022-04-18 23:34

用一个循环的链表吧,模拟选择,每选出一个,就进行输出,同时删除该结点。
更方便的方法就是用一个循环bool类型数组,加一个边界条件,模拟选择,每选出一个就输出,同时将该数组元素的真值设置为假。

热心网友 时间:2022-04-19 01:09

程序参考:
#include
<stdio.h>
int
main()
{

int
n;

int
n1=0;
//表示报数记数器

int
p=0;
//指向当前数组元素的下标

int
NumOfKing;
//大王的编号

int
M,K;
//M为已知猴子总数,K为报数的量级

int
a[1000];

FILE
*fp1,*fp2;

if((fp1=fopen("monkey.in","r"))==NULL)

{

printf("cann't
open
file!\n");

return
0;

}

fscanf(fp1,"%d%d",&M,&K);
//从文件中读取已知数据

n=M;
//M为圈的长度,即初始猴子数

for(int
i=0;i<n;i++)

a[i]=1;
//初试话状态数组,所有猴子都是就位的

while(n>1)
//n当前圈内还剩下的猴子数,控制循环在圈内只剩下一只猴子时结束循环

{

while(n1<K)
//n1表示报数记数器,每报一次n1加1,直到报完k个数之后结束此循环

{

if(a[p]==1
)
//如果当前位置有猴子

{

n1++;
//报数记数器加1

if(n1==K)

a[p]=0;
//将第K次报数的猴子置0,表示退出圈子

}

p++;
//移动到下一个位置

p=p%M;
//这一步是为了解决循环数组成环遍历的目的

}

n1=0;
//当报完K个数后将报数记数变量清0,以备下次重新报数

n--;
//当报完一轮后总猴子数减1

}

for(int
i=0;i<M;i++)
//最后遍历一遍状态数组
找到状态为1的下标i+1即为猴子大王的编号

{

if(a[i]==1)

{

NumOfKing=i+1;

break;

}

}

fp2=fopen("monkey.out","w");

fprintf(fp2,"%d",NumOfKing);

fclose(fp1);

fclose(fp2);

return
0;
山中无老虎,猴子称大王下一句是什么?

应该是:“山中无老虎,猴子称大王”。意思是:老大没了之后其他小弟都可以当老大。出自:清代周希陶的《增广贤文》原文:山中无老虎,猴子称霸王。译文:老虎离开了大山之后,猴子在山里当了大王。

约瑟夫问题猴子选大王

基本要求:编写函数实现,输入参数为猴子总数m和每次数的个数n(n&lt;m),输出大王的编号。C程序实现c#include #include struct monkey { int num; struct monkey *next;};// ... 其他函数定义 ...int main() { // ... 输入数据并计算 ... printf("猴王的编号是:%d\n", kin...

猴子选大王是哪一类的题目??快!!!

实际是Josephus(约瑟夫)问题 [问题描述]M只猴子要选大王,选举办法如下:所有猴子按1…M编号围坐一圈,从第1号开始按顺序1,2,…,N报数,凡报到N的猴子退出到圈外,如此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王。M和N由键盘输入,打印出最后剩下的那只猴子的编号。[问题分析]这个...

山中无老虎 猴子称大王什么意思

老虎大王听说了这件事,非常的生气,因为上朝的时候经常有动物请病假,其实都是去听猴子唱哆唻咪去了。猴子请的假就更多了,因为他有自己的事业,就是把哆唻咪唱遍大山的每一个角落,实在太忙了,就没有时间去参拜老虎大王。动物们奏请老虎大王将哆唻咪作为动物王国的国歌,更加激起了老虎的怒火。他...

山中无老虎的下一句是?

山上无老虎,猴子称大王是一个俗语,比喻没有贤人,普通人物也可以充当重要角色。出自《晚清文学丛钞·冷眼观》第十四回:“靠著老子做过上海道,在城里面山上无老虎,猴子称大王弄惯了的脾气,陪著朋友来吃台把酒,就像是连四块下脚钱都是冤枉花的”。传说老虎在开初就以镇山制兽之威名当上了兽王...

11只猴子选大王,最后谁是大王

为:n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:(1) 要求由用户输入开始时的猴子数n、报数的最后一个数m。(...

《山中无老虎猴子称大王》十二生肖中猴子的故事

那时猴子和老虎是邻居。他们称彼此为兄弟。当虎王出去的时候,猴子们服从了振山的命令。所有的野生动物都惧怕虎王的威风,只听猴子的召唤。这就是“山中无老虎,猴子称大王”的由来。有一天,虎王不幸落入猎人的罗网。他拼命挣扎,没能逃脱。就在猴子来的时候,虎王大声呼救。猴子见状,赶紧爬上树,解开...

C数组猴子选大王

结果:--- 猴子竞选大王 --请输入猴子的总数num = 10 按顺时针方向就坐的猴子编号依次是:猴子1 猴子2 猴子3 猴子4 猴子5 猴子6 猴子7 猴子8 猴子9 猴子10 规定数字,报出这个数的猴子将被淘汰出局,这个数max_hao = 2 被淘汰出局的猴子依次是:猴子2 猴子4 ...

猴子选大王的编程,数据结构方法

不确定具体题目,从网上摘抄来的题目:山上有n只猴子要选大王,选举办法如下:所有猴子从1到n进行编号并围坐一圈,从第一号开始按顺序1,2,...m继续报数,凡是报m号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号。这个题目是循环链表的应用,循环链表...

n只猴子要选大王,选举方法如下:所有猴子按 1,2 ……… n 编号并按照...

M只猴子要选大王,选举办法如下:所有猴子按1,2……n编号围成一圈,从第一号开始顺序1,2……m,凡是报m号的退出圈外,如此循环报数直到圈内只剩一只猴子时这只猴子就是大王。C++解答 include &lt;iostream&gt; using namespace std;struct monkey //结构声明 { int num; //整型数,用于记录猴子...

猴子大王内部 猴子大王123 猴子选大王python 猴子报数 猴子大王内部版弱网 1195猴子选大王 猴子选大王问题 猴子选大王思路 猴子选大王循环链表
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑为什么从网卡启动? 哈尔滨的公办专科学校 给亲朋好友送鲍芹送几盒合适 请问四川凉山不是中专就可以报考村官吗 为什么我报了说我学历条件不符合... 曾沛慈真实身高 新组装电脑安装U盘启动win10系统后无限蓝屏,每次蓝屏代码不一样... 从保山出发3个小时的车程能到哪呢? 求帮忙啊 已知a的x次方=3,b的y次方=2,求( 魔兽世界职业选择我想在猎人,萨满,武僧,选一个一直玩, 魔兽世界5.4职业选择,混合职业哎,小德,牧师,武僧,奶德可以,但是输出... 我要买房贷款30万,10年还清,按现在住房公积金贷款利率计算,每月该还多少本金和利息,最后总共还多少 一岁宝宝看视频早教后变近视,是不是对孩子压力过大? 一岁宝宝看视频早教后变近视,早教机构对此作何回应? 江苏1岁宝宝上视频早教课致近视,孩子到底要不要早教? 雷州的顺丰快递在那里啊?靠近呢? 新的 猴子选大王 代码 题目:猴子选大王 功能:设编号为1,2,3,……,n的n(n&gt;0)个猴子按顺时针方向围坐 我姓陈,孩子母亲姓李,请帮忙给女儿起个名字,最好能把我们的姓都放进去,谢谢 陈李涵有多少个人同名同姓? 一升0号柴油等于多少公斤 零号柴油一升等于多少斤 韩束净润卸妆洁面乳怎么没有泡沫? 韩束洗面奶怎么样? 韩束洗面奶如何? 化学材料的分类 化学材料分为那些种类 像:高分子化合物,有机合成材料等 韩束洗面奶怎么样,用过的求说说 请问这是哆啦A梦中的哪一集? 韩束真的好吗? 这是哆啦A梦哪一集? 材料可分为天然材料和什么材料两大类 多啦a梦总共多少集了 鄂州的春节这个作文400子字6年及下册第二单元作文 关于春节的作文片段 MS2306的硬盘是什么品牌?各种参数是多少?请帮助提供。谢谢! 我的家乡湖北鄂州作文怎样写 宏基MS2306怎么样?价格大多少,i5处理器的。 我买的宏基4741g-MS2306笔记本,处理器是i5-450m的,硬盘500g,为什么在网上找不到? 宏基ms2306怎么样 我的本本acer型号ms2306 预装win7家庭普通版想升级正版win7旗舰版,该怎么做?(机子是64 位的操作系统) 哪位大神回答一下宏基MS2306电脑怎么样?价钱多少? 我在笔记本电脑上添加了一个2G的内存条,现在是4G的了,那现在笔记本适合怎样的配置???求解 推荐一下适合我的宏基和华硕笔记本的型号 acer M52306这款笔记本怎么样 本人是室内设计师,经常用cad,ps等软件;尤其是3d max跑图,想买一个适合作图的笔记本。 宏基ms2306报价 有关于大自然给人类启示的资料 elpida 2GB 2Rx8 PC3-10600s-9-10-F1 acer笔记本电脑ms2306系统安装教程 宏基ms2306 笔记本发热量大怎么办 什么千什么语 哪里有买华容道玩具?