约瑟夫问题

约瑟夫问题简述

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知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语言实现相关推荐

  1. python约瑟夫环_Python语言之如何实现约瑟夫环问题

    本文Python语言实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,希望对大家学习Python语言有所帮助,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0 ...

  2. 约瑟夫环--C语言解析

    约瑟夫环问题 约瑟夫环:在我们C语言的初学基础中,会遇到魔方阵,做游戏踢出 队列.都要用到循环数组.魔方阵之前有讲解,今天只说做游戏踢出队列. 这类问题有很多说法.现在我们说做游戏退出:有n个人,在一 ...

  3. 约瑟夫问题C语言加注释,用链表实现约瑟夫环【有注释,有很多注释】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 主要问题在于删除约瑟夫环的数,结果一直出不来,看了好几天改了好几次都改不对 #include #include typedef struct ysf { ...

  4. 约瑟夫问题(c语言)

    摘自百度百科 N 个人围成一圈,从第一个人开始报数,数到 M 的人出圈:再由下一个人开始报数,数到 M 的人出圈. 约瑟夫问题的两种形式: 1.求出最后剩下的人的原始序号: #include<s ...

  5. 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位

    题目1,假设有30个人,没人轮流循环报数,当报到9的倍数的人出列,剩下的继续,问最后剩下的1个人是原来的第几号? 代码如下 /** @Date 2019-09-04* @Author krisfan* ...

  6. 用单循环链表实现约瑟夫环(c语言)

    首先我是设置的链表节点的元素包括三个:1.每个人的各自拥有的顺序(math表示)2.每个人所拥有的密码(data表示)3.指针元素指向下一个: typedef struct node {int mat ...

  7. 数据结构解决约瑟夫问题C语言

    据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式:4 ...

  8. c语言 队列 游戏,循环队列实现约瑟夫游戏(C语言版)

    #include #include typedef struct node { int *base; int front; int rear; }Node; /* 思路: *使用一个顺序循环队列来存放 ...

  9. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

最新文章

  1. 利用JNI技术在Android中调用C++代码
  2. 进程管理ps,top
  3. scrapy mysql 报错_scrapy爬数据存mysql报错
  4. 39 岁网络技术员入住养老院,早 6 晚 9 的作息、和老人一起追剧晒太阳!
  5. android 开机动画 渐变,[Parallax Animation]实现知乎 Android 客户端启动页视差滚动效果...
  6. [vue require动态引入组件、变量]
  7. RIP路由协议的理解
  8. MVC和MTV初步认识+django的一个简单应用(萌新交流互动,欢迎大家指出错误)
  9. android activity 的四种启动模式
  10. php.ini gd_php开启GD库实现方法
  11. Java-事务的传播特性和隔离级别
  12. cannot connect to X server
  13. 备份Ubuntu 并制作成iso安装文件
  14. PS初体验:熟悉快捷键
  15. Windows提权基本原理,各位表哥了解下!
  16. 计算机专业学生致谢词,计算机专业毕业论文致谢词
  17. python实验室怎么样_跟老齐学Python之一个免费的实验室
  18. windows10如何安装hyper-v
  19. UsbDeviceManager.java
  20. 科技云报道:向云转型有没有“捷径”? 信服云告诉你!

热门文章

  1. dnsmasq windows版_烂泥:dnsmasq搭建简易DNS服务器
  2. VS Code自定义HTML代码片段
  3. android音视频开发面试!Android-技术的下半场
  4. jQuery插件stickup.js 源码解析初步
  5. 现在当兵有什么待遇复原以后_当兵退伍后的各种待遇
  6. 《潜伏》中谢若琳的经典台词
  7. 无锡职业培训——不考初会直接考注会合适吗?
  8. python通过调用百度api实现语音识别(超详细)
  9. Java四舍五入、DecimalFormat、BigDecimal、NumberFormat使用方法
  10. vue:知识点5 加载pc或app页面组件-不同路由设置