解决猴子选大王问题(用C,原创)
山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号。
#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,原创)相关推荐
- python解决猴子选大王问题:15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问: 哪只猴子会成为大王 ?
话不多说,超级简单,直接上代码: ## 给猴子编号 AllMonkey = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]## 循环出栈 num ...
- php 猴子选大王,php猴子选大王
法一: function monkeyKing($n,$m) { $arr=range(1,$n); $i=0; while (count($arr)>1) { for($i=1;$i<= ...
- php猴子找大王算法,教程方法;php实现猴子选大王问题算法实例电脑技巧-琪琪词资源网...
琪琪词资源网-教程方法;php实现猴子选大王问题算法实例电脑技巧,以下是给大家带来的教程方法;php实现猴子选大王问题算法实例,大家可以了解一下哦! 下面为你介绍php实现猴子选大王问题算法实例. 本 ...
- 猴子选大王--约瑟夫问题浅析
猴子选大王--约瑟夫问题浅析 猴子选大王问题是一个十分经典的算法问题,这个问题是这样的:一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N ...
- 【数据结构机试复习2】 赛马 猴子选大王
EX1:赛马 A与B之间将进行一场赛马比赛,C为裁判.A与B分别拥有n匹马,这2n匹马中每匹马拥有的能力值都不相同.比赛前,参赛的两人先决定自己的马的出场顺序:比赛时,A的第一匹马将对战B的第一匹马, ...
- php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程
php猴子选大王问题解决方法,猴子大王 本文实例讲述了php猴子选大王问题解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数 ...
- 猴子选大王php,php实现猴子选大王
php实现猴子选大王/** * n只猴子围坐成一个圈,按顺时针方向从1到n编号. * 然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局, * 再从刚出局猴子的下一个位置重新开始报数, * ...
- 约瑟夫环-猴子选大王(变型题)
约瑟夫环-猴子选大王(变型题) 接着上篇猴子选大王继续展开,上篇讲的是有m个猴子,从第一个猴子开始报数,当报到n时,第n个猴子出去,从n+1猴子开始,从1继续报数. 这篇我们来说,从任意猴子k的位置开 ...
- C语言每日一题-PTA基础编程题-7-28 猴子选大王
7-28 猴子选大王 (20分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻 ...
最新文章
- 几步教你轻松搭建一个Java Web项目
- PHP学习笔记-字符串操作2
- JQueryEasyUI学习笔记(十四)tree
- [译]15个关于Chrome的开发必备小技巧
- mysql数据库未启动失败_mysql数据库启动失败
- Linux/CentOS7给一个网卡设定多个IP地址, Linux网卡配置虚拟IP
- JavaScript数组常用的方法总结
- 面型对象 (接口与类的区别)
- php记录登录时间,php记录 用户当前页面停留时间
- C# Winform DataGridview 实现行号倒序
- python︱flashtext高效关键词查找与替换
- 实现最小宽度的几种方法及CSS Expression
- SVG 图标和sketch 模版免费网站
- 韦东山 嵌入式Linux驱动开发基础知识 上【hello驱动 像单片机那样驱动 用结构体封装驱动 分别注册到内核
- 通信工程专业高级工程师职称申报经验分享
- BasesHomo 21‘ 旷视UESTC
- 鸿蒙手表定位功能Demo体验,适用儿童、老年和外出旅游安全市场
- 华为手机灵敏度设置_和平精英华为手机灵敏度怎么设置 上分灵敏度推荐
- 从技术实现到安全运行,工程师版“元宇宙”离我们还有多远?
- 机器人仿真控制(以ABB为例)
热门文章
- android 手机图库获取sd卡图片,关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结...
- python散点图显示数据_Python数据可视化——散点图
- python中datetime模块_python中的datetime模块
- 深度学习 tensorflow tf.layers.conv2d_transpose 反卷积 上采样
- matlab 神经网络编程入门系列(1)
- 数组去重(包括es6)
- 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
- powerbuilder 保存图表图像_数据可视化/统计图表循序渐进指南
- 2018年4月java自考真题,全国2018年4月自考互联网数据库考试真题
- [Google Guava] 9-I/O