今天在群里看到有人提到一个猴子选大王的问题,题目如下:
题目
山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号。
不知道网上有没有这个题目的答案,我自己写了个程序,可以算出哪个猴子可以当大王!!
#include <stdlib.h>
#include <stdio.h>
//定义链表
struct data
{
int inter;
struct data *next;
};

//生成链表函数
struct data *create(int num);  

void main()
{
int n,m,t;
struct data *p,*head,*q;
m=6;   //猴子的数量
t=4;
m+=1;  //猴子的数量和最前面的表头
n=0;     //好象下面有了,这里并不需要
head=create(m);    //生成链表
p=head;
while(m>1)
{
n=0;

while(n<t)
{
q=p;
p=p->next;
if(p->next==NULL&&(n!=t-1))     /*注意(n!=t-1)这个条件*/
{
p=head;
}
n++;
}
if(p==head->next)               //指向第一个
{
head=head->next;
}
else if(p->next==NULL)         //指向最后一个
{
q->next=NULL;
p=head;
}
else                              //其他,这三个的选择的顺序可不是随便排的
{
q->next=p->next;          //前后相连,去掉中间的
p=q;
if(p->next==NULL)        
{
p=head;
}
}
m--;
}

printf("%i",p->inter);
}


struct data *create(int num)
{
int i,l=0;
struct data *head,*tail,*p;
head=tail=NULL;
for(i=0;i<num;i++)
{
p=(struct data*)malloc(sizeof(struct data));
p->inter=l;                         /*给每只猴子编号,猴子编号从1开始,0保留作为其它用途*/
l++;
p->next=NULL;
if(head==NULL)
{
head=tail=p;
}
else
{
tail->next=p;
tail=tail->next;
}
}
return head;     //返回表头
}

转载于:https://blog.51cto.com/240420643/94156

解决猴子选大王问题(用C,原创)相关推荐

  1. python解决猴子选大王问题:15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问: 哪只猴子会成为大王 ?

    话不多说,超级简单,直接上代码: ## 给猴子编号 AllMonkey = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]## 循环出栈 num ...

  2. php 猴子选大王,php猴子选大王

    法一: function monkeyKing($n,$m) { $arr=range(1,$n); $i=0; while (count($arr)>1) { for($i=1;$i<= ...

  3. php猴子找大王算法,教程方法;php实现猴子选大王问题算法实例电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;php实现猴子选大王问题算法实例电脑技巧,以下是给大家带来的教程方法;php实现猴子选大王问题算法实例,大家可以了解一下哦! 下面为你介绍php实现猴子选大王问题算法实例. 本 ...

  4. 猴子选大王--约瑟夫问题浅析

    猴子选大王--约瑟夫问题浅析 猴子选大王问题是一个十分经典的算法问题,这个问题是这样的:一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N ...

  5. 【数据结构机试复习2】 赛马 猴子选大王

    EX1:赛马 A与B之间将进行一场赛马比赛,C为裁判.A与B分别拥有n匹马,这2n匹马中每匹马拥有的能力值都不相同.比赛前,参赛的两人先决定自己的马的出场顺序:比赛时,A的第一匹马将对战B的第一匹马, ...

  6. php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程

    php猴子选大王问题解决方法,猴子大王 本文实例讲述了php猴子选大王问题解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数 ...

  7. 猴子选大王php,php实现猴子选大王

    php实现猴子选大王/** * n只猴子围坐成一个圈,按顺时针方向从1到n编号. * 然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局, * 再从刚出局猴子的下一个位置重新开始报数, * ...

  8. 约瑟夫环-猴子选大王(变型题)

    约瑟夫环-猴子选大王(变型题) 接着上篇猴子选大王继续展开,上篇讲的是有m个猴子,从第一个猴子开始报数,当报到n时,第n个猴子出去,从n+1猴子开始,从1继续报数. 这篇我们来说,从任意猴子k的位置开 ...

  9. C语言每日一题-PTA基础编程题-7-28 猴子选大王

    7-28 猴子选大王 (20分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻 ...

最新文章

  1. 几步教你轻松搭建一个Java Web项目
  2. PHP学习笔记-字符串操作2
  3. JQueryEasyUI学习笔记(十四)tree
  4. [译]15个关于Chrome的开发必备小技巧
  5. mysql数据库未启动失败_mysql数据库启动失败
  6. Linux/CentOS7给一个网卡设定多个IP地址, Linux网卡配置虚拟IP
  7. JavaScript数组常用的方法总结
  8. 面型对象 (接口与类的区别)
  9. php记录登录时间,php记录 用户当前页面停留时间
  10. C# Winform DataGridview 实现行号倒序
  11. python︱flashtext高效关键词查找与替换
  12. 实现最小宽度的几种方法及CSS Expression
  13. SVG 图标和sketch 模版免费网站
  14. 韦东山 嵌入式Linux驱动开发基础知识 上【hello驱动 像单片机那样驱动 用结构体封装驱动 分别注册到内核
  15. 通信工程专业高级工程师职称申报经验分享
  16. BasesHomo 21‘ 旷视UESTC
  17. 鸿蒙手表定位功能Demo体验,适用儿童、老年和外出旅游安全市场
  18. 华为手机灵敏度设置_和平精英华为手机灵敏度怎么设置 上分灵敏度推荐
  19. 从技术实现到安全运行,工程师版“元宇宙”离我们还有多远?
  20. 机器人仿真控制(以ABB为例)

热门文章

  1. android 手机图库获取sd卡图片,关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结...
  2. python散点图显示数据_Python数据可视化——散点图
  3. python中datetime模块_python中的datetime模块
  4. 深度学习 tensorflow tf.layers.conv2d_transpose 反卷积 上采样
  5. matlab 神经网络编程入门系列(1)
  6. 数组去重(包括es6)
  7. 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
  8. powerbuilder 保存图表图像_数据可视化/统计图表循序渐进指南
  9. 2018年4月java自考真题,全国2018年4月自考互联网数据库考试真题
  10. [Google Guava] 9-I/O