约瑟夫(Joseph)问题

[问题描述]

约瑟夫(Joseph)问题的一种描述是:编号为 1,2,…,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个整数作为报数上限 m,从第一人开始按顺时针方向从自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他的顺时针方向上的下一个人开始重新从 1 报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。

[基本要求]

采用单向循环链表模拟此过程,按照出列的顺序印出各人的编号

[测试数据]

m 的初值为 6;n=7,7 个人的密码依次为:3,1,7,2,4,8,4,正确的出列顺序应为 6,1,4,7,2,3,5。

[实验提示]

单向循环链表的结点类型定义参照如下:

typedef struct LNode

{

int code; //定义整型变量 code 用来存放序号

int key; //定义整型变量 key 用来存放密码

struct LNode *next;

}LNode,*LinkList;

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{int code;//存放序号int key;//存放密码struct LNode *next;
}LNode,*LinkList;void CreatList(LinkList &L,int i)//建立有i个元素的单向循环链表
{LinkList p,s;int j;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;p=L;if(i!=0)printf("请按提示输入数据元素\n\n");for(j=0;j<i;j++){s=(LinkList)malloc(sizeof(LNode));s->code=j+1;printf("请输入第%d个的密码:  ",j+1);scanf("%d",&s->key);p->next=s;p=s;}p->next=L->next;
}
void ListDelete(LinkList &L,int i,int &e)//删除链表L中第i个元素
{LinkList p;int j;for(j=0; L && j<i-1;j++){L=L->next; }p=L->next;e=p->key;L->next=p->next;printf("出列人的序号为%d,密码为%d\n",p->code,p->key);free(p);
}
int main()
{LinkList L;int m,n,code;CreatList(L,0);printf("请输入总人数n:\n");scanf("%d",&n);printf("请输入报数上限m:\n");scanf("%d",&m);CreatList(L,n);code=0;while(L){ListDelete(L,m,code);m=code;}return 0;
}

约瑟夫(Joseph)问题相关推荐

  1. 一步一步求解约瑟夫(Joseph)问题

    约瑟夫(Joseph)问题的解决方法 问题描述 最初Joseph问题是这样的:有n个人(分别编号1,2--n)围成一圈,这些人轮流数数(编号为1的人开始,从1开始数),当数到m的人就会被处决.接着,后 ...

  2. 求解约瑟夫(Joseph)问题---Java算法小练

    约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称"丢手绢问题". -百度百科 相信大部分人在刚开始接触Java算法都会遇到约瑟夫问题, ...

  3. C语言循环链表(不带头结点)解约瑟夫问题的一种变形

    一.问题描述 约瑟夫(Joseph)问题的一种描述是:编号为 1,2,-,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个整数作为报数上限 m,从第一人开始按顺时针方向 ...

  4. 约瑟夫环的c语言描述

    约瑟夫环的c语言描述 问题描述 代码(C语言) 问题描述 约瑟夫(Joseph)问题的一种描述是:编号为1,2,-,n的n个人按顺时针方向围坐一圈.每人持有一个密码(正整数).一开始任选一个正整数作为 ...

  5. 熔池 沉积_用于3D打印的AI(第3部分):异常熔池分类的纠缠变分自动编码器

    熔池 沉积 This article is part 3 of the AI for 3-D printing series. Read part 1 and part 2. 本文是3-D打印AI系列 ...

  6. google 隐私权政策_如何阻止不断出现的Google隐私权提醒消息?

    google 隐私权政策 Being notified about changes or updates to privacy settings on occasion is one thing, b ...

  7. Joseph Problem(解约瑟夫问题)

    今天在一个OJ上做了一个Joseph Problem(解约瑟夫问题)的题,题目不难,直接用循环链表模拟实际操作即可完成,但是用此种方法的时间太长,超时,所以我就用了一个大家对这类问题比较常用的解法-- ...

  8. UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】

    Joseph's Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7906 Accepted: 2107 Desc ...

  9. I00032 约瑟夫环(Joseph problem)

    有关约瑟夫环的介绍,可以参见百度百科的约瑟夫环. 程序中假定人数n小于100,输入数据为n和m.其中,n为人数,数到第m个人出局.输出出局人的顺序.输入数据为0和0时程序结束. AC的C语言程序如下: ...

最新文章

  1. 【前沿】MIT搞了个进取型机器人!能研究学习对象操纵的基础
  2. Knockout 监控数组对象属性
  3. java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
  4. 帆软正则表达式定义规则
  5. 条件语句:case语句
  6. 【C#每日一贴】ArrayList 转换成byte数组
  7. Win10卸载python总是提示error2503失败各种解决办法
  8. SAP打印脱机请求和输出请求管理
  9. 【原创】CSS3动画总结对比 / 带思维导图 / 启发小案例
  10. KiCad 5 版本体验记录
  11. 计算机改硬盘格式,预装win10改win7硬盘格式怎么改_win10改win7分区格式如何转换...
  12. TOM企业邮箱,为你打造企业专属邮箱
  13. java+poodle漏洞修复_SSLv3 Poodle攻击漏洞检测工具
  14. linux基因组文件,科学网-NGS基础 - 参考基因组和基因注释文件-陈同的博文
  15. 双十一 唯品会内部优惠入口
  16. 【广州数据报表中心怎么样】什么样的大数据
  17. week07 13.3 NewsPipeline之 三News Deduper之 tf_idf 查重
  18. 小白鼠与毒药解题过程分析
  19. 这件事有了新进展 | 经济学人20210529期下载
  20. 笔记本安装黑苹果 MacOS Catalina 10.15

热门文章

  1. java教程解析_【B0666】[java视频教程]全方位深入解析最新版SpringBoot源码新手都能学懂视频教程...
  2. 北京市经信委主任王刚一行赴博彦科技调研
  3. 展厅智能中央控制服务器,四川中控展厅分布式智能控系统
  4. solidworks迈迪设计宝_为什么搞机械设计的不愿下车间?真的有必要吗
  5. web端自动化测试--淘宝
  6. centos镜像下载网址
  7. 分享3款消除笔app,轻松去除各种水印瑕疵,太方便了
  8. 社会治安综合治理信息系统设计
  9. vs2019+opencv4.4+darknet+cuda11.1
  10. Xmanager的下载和使用