约瑟夫问题——C语言实现
约瑟夫问题
约瑟夫问题简述
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
代码实现
#include <stdio.h>
#include <stdlib.h>typedef struct node
{int local;struct node * next;
}LNode,*LinkList;void CreateLinkList_L(LinkList L,int n);
void Josephus(LinkList L,int n,int m,int k);void main()
{//创建循环单链表 结点个数是 n//报数 报到m的出去 也就是 删除该结点LinkList L = (LinkList)malloc(sizeof(LNode));L->local = 1;CreateLinkList_L(L,10);Josephus(L,10,4,3);
}void CreateLinkList_L(LinkList L,int n)
{int i;LinkList s,r;r = L;for(i = 2;i <= n;i++){s = (LinkList)malloc(sizeof(LNode));s->local = i;r->next = s;r = r->next;}r->next = L;
}void Josephus(LinkList L,int n,int m,int k) //m = 3 , k = 2
{int i = 1,j = 1;LinkList p,q,s;p = L;//确定第一个喊话的同学while(i < k){q = p;p = p->next;i++;}while(p->next != p){//一个循环用来喊话,一直喊m次while(j < m){q = p;p = p->next;j++;}s = p;p = p->next;q->next = p;printf("%d号淘汰!\n",s->local);free(s);j = 1;}printf("%d胜出!",p->local);
}
约瑟夫问题——C语言实现相关推荐
- python约瑟夫环_Python语言之如何实现约瑟夫环问题
本文Python语言实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,希望对大家学习Python语言有所帮助,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0 ...
- 约瑟夫环--C语言解析
约瑟夫环问题 约瑟夫环:在我们C语言的初学基础中,会遇到魔方阵,做游戏踢出 队列.都要用到循环数组.魔方阵之前有讲解,今天只说做游戏踢出队列. 这类问题有很多说法.现在我们说做游戏退出:有n个人,在一 ...
- 约瑟夫问题C语言加注释,用链表实现约瑟夫环【有注释,有很多注释】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 主要问题在于删除约瑟夫环的数,结果一直出不来,看了好几天改了好几次都改不对 #include #include typedef struct ysf { ...
- 约瑟夫问题(c语言)
摘自百度百科 N 个人围成一圈,从第一个人开始报数,数到 M 的人出圈:再由下一个人开始报数,数到 M 的人出圈. 约瑟夫问题的两种形式: 1.求出最后剩下的人的原始序号: #include<s ...
- 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
题目1,假设有30个人,没人轮流循环报数,当报到9的倍数的人出列,剩下的继续,问最后剩下的1个人是原来的第几号? 代码如下 /** @Date 2019-09-04* @Author krisfan* ...
- 用单循环链表实现约瑟夫环(c语言)
首先我是设置的链表节点的元素包括三个:1.每个人的各自拥有的顺序(math表示)2.每个人所拥有的密码(data表示)3.指针元素指向下一个: typedef struct node {int mat ...
- 数据结构解决约瑟夫问题C语言
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式:4 ...
- c语言 队列 游戏,循环队列实现约瑟夫游戏(C语言版)
#include #include typedef struct node { int *base; int front; int rear; }Node; /* 思路: *使用一个顺序循环队列来存放 ...
- c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题
N个人围成一圈 - phpStudy...
详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...
最新文章
- 利用JNI技术在Android中调用C++代码
- 进程管理ps,top
- scrapy mysql 报错_scrapy爬数据存mysql报错
- 39 岁网络技术员入住养老院,早 6 晚 9 的作息、和老人一起追剧晒太阳!
- android 开机动画 渐变,[Parallax Animation]实现知乎 Android 客户端启动页视差滚动效果...
- [vue require动态引入组件、变量]
- RIP路由协议的理解
- MVC和MTV初步认识+django的一个简单应用(萌新交流互动,欢迎大家指出错误)
- android activity 的四种启动模式
- php.ini gd_php开启GD库实现方法
- Java-事务的传播特性和隔离级别
- cannot connect to X server
- 备份Ubuntu 并制作成iso安装文件
- PS初体验:熟悉快捷键
- Windows提权基本原理,各位表哥了解下!
- 计算机专业学生致谢词,计算机专业毕业论文致谢词
- python实验室怎么样_跟老齐学Python之一个免费的实验室
- windows10如何安装hyper-v
- UsbDeviceManager.java
- 科技云报道:向云转型有没有“捷径”? 信服云告诉你!
热门文章
- dnsmasq windows版_烂泥:dnsmasq搭建简易DNS服务器
- VS Code自定义HTML代码片段
- android音视频开发面试!Android-技术的下半场
- jQuery插件stickup.js 源码解析初步
- 现在当兵有什么待遇复原以后_当兵退伍后的各种待遇
- 《潜伏》中谢若琳的经典台词
- 无锡职业培训——不考初会直接考注会合适吗?
- python通过调用百度api实现语音识别(超详细)
- Java四舍五入、DecimalFormat、BigDecimal、NumberFormat使用方法
- vue:知识点5 加载pc或app页面组件-不同路由设置