C语言-有趣的约瑟夫问题及解决办法

作者&投稿:诺希 (若有异议请与网页底部的电邮联系)
~ 约瑟夫问题,亦称约瑟夫置换,是计算机科学和数学中的一个经典问题。它来源于一个关于历史学家约瑟夫的故事,故事讲述了一群犹太人在被罗马人占领后,为避免被捕而自行选择的自杀方式。

在这个故事中,39人围成一圈,从某人开始数,每数到第3人,该人即自杀,随后从下一人重新开始数,直至所有人自杀。约瑟夫和他的朋友却想出了一个巧妙的策略,他们故意假装遵守规则,但实际从第16和第31个位置开始,从而成功幸存。

约瑟夫问题的数学解决方案多种多样,这里提供一种使用循环链表的方法。此方法基于原始问题中的圆圈排列,通过循环链表实现数人与淘汰的过程。编写一个程序,根据特定规则运行,即可模拟出约瑟夫问题的解。

程序源代码如下,通过调整Start、Count、length这三个参数,可以改变游戏规则,尝试不同的初始位置和人数。

运行程序后,输出结果验证了约瑟夫和他的朋友策略的正确性。

约瑟夫问题的解决方案不仅展示了数学与计算机科学的结合,还富有策略与智慧。通过调整参数探索不同的解决方案,可以加深对问题本质的理解。


约翰·约瑟夫·潘兴的个人轶事
和部下巴顿如果没有第一次世界大战的话,那么潘兴和巴顿的关系就会更加有趣了,在潘兴奔赴法国统帅美军前,他和巴顿的妹妹尼塔已经准备订婚了,他们相约在第一次世界大战结束之后举行婚礼。如果这个婚礼成了的话,那么按照我们中国人的观念,潘兴就是巴顿的妹夫了。但是很遗憾,由于第一次世界大战的缘故,...

这就是物理这套书怎么样
《这就是物理》的作者,是来自美国的约瑟夫·米森。米森长期从事儿童科普教育研究,善于把晦涩难懂的科学知识,转化为生动有趣的漫画语言,漫画主编的背景,正是他的优势。著名物理学家周立伟老师在为此书作序时写道:当今世界,现代文明几乎没有哪个领域不依赖于物理学,它也是我们认识世界的基础,各种各样...

第五人格约瑟夫为什么叫约淑芬?
1. "约瑟夫"这个名字在中文里有一个谐音,叫做"约淑芬"。2. 这个谐音让一些玩家觉得有趣,于是他们开始称呼约瑟夫为"约淑芬"。3. 约瑟夫在游戏《第五人格》中是一个受欢迎的角色,他的这个谐音昵称也被广泛使用。

为什么第五人格中的摄影师约瑟夫是个老头?
约瑟夫似乎找到了记录真实的途径,他开始用这种神奇的仪器来记录一切,起初他感到新奇有趣,相片上的影像与现实毫无出入。但随着时间流逝,约瑟夫终于领悟到一件事:留在相片里的只是影像,被拍摄的物品和人仍然会损坏、失色。一如他早夭的双胞胎兄弟。他期望永久保存现实中那些人和物的鲜活形象,让相片中的...

约瑟夫·艾迪生的生平
在18世纪早期,也就是在弥尔顿死后的30-40年左右光景,也许有人在伦敦的咖啡屋里看到过一个嘴边常挂着微笑、眼睛炯炯有神、不大爱动的仁慈绅士。这位绅士就是才华横溢的约瑟夫·艾迪生。艾迪生既是一位政治家,还是著名的诗人和小品文作家。人们常常看到经常同他光顾咖啡屋的还有一位古道热肠的直率的士兵...

《凤凰:神鸟传奇》作者: [美]约瑟夫·尼格
〔美〕约瑟夫·尼格 Joseph Nigg 神话动物研究首席专家,自1982年出版《狮鹫之书》以来,以各种风格和形式对神秘生物丰富的文化内涵进行探索,出版有《神奇动物之书》《驯龙手册》等。他的作品曾屡获大奖,并被翻译成20多种语言。其中,《海怪:欧洲古〈海图〉异兽图考》已有简体中文版。 译者 李文涛 英语文学硕士,夏威夷...

世界经典童话名家名篇:鲸鱼的咽喉为什么很小作者简介
在这个故事中,吉卜林通过生动的描述,让读者仿佛置身于鲸鱼的世界。他详细地介绍了鲸鱼的体型、习性以及它们在海洋中的生活状态。通过这个故事,孩子们不仅能够了解到鲸鱼的咽喉为什么很小,还能够学习到更多关于海洋生物的知识。总之,约瑟夫·吉卜林的童话作品不仅有趣,而且对孩子们的智力发展有着积极的影响...

约瑟夫.普里斯特列的详细介绍
约瑟夫·普里斯特利是英国著名的化学家。他1733年3月13日生于英格兰约克郡兹市郊区的一个名叫菲尔德海德...“为了弄清这些问题,普里斯特利进行了多种有趣的实验。例如,他点燃一根蜡烛,把它放到预先放有小老鼠

老外都在看的11部爆笑英语情景喜剧 你看过几部?
当然,我们也注意到像《摩登家庭》这样的热门剧集虽然有趣,但因其广泛流行,可能已经深入你的视野。如果你正在寻找提升词汇量的策略,不妨加入"9 Vocabulary"课程,让你的英语学习之路更加丰富。在提升英语水平的道路上,除了电视剧,还有其他资源可以利用,比如美剧的沉浸式学习,以及YouGlish这样的免费学习...

约瑟夫·斯蒂格利茨的生平
他的这一警示具有巨大的理论意义,因为就不对称信息来说,不同的市场会有不同的特征。这一结论同样适用于公共管理的研究领域。可见斯蒂格利茨的一系列论著不仅是进一步探索信息经济学理论的主要文献,而且也是有关领域深入研究的重要基础。他的有趣的理论,用简单的语言来表述,听起来就和非经济学的常识一...

德州市19623891765: C语言解决"约瑟夫问题" -
孛馥积雪: #include<stdio.h> struct list//建立一个结构体,包括每个人的编号,密码和下一级的指针 { int id; struct list *next; }; list* input(int n)//链表的初始化 { list *p,*q,*l; int i,m; p=new list; l=new list; l->next=NULL; p=l; p->id=1;//第一个人的初始化 for(i=2;i<=n;...

德州市19623891765: 怎样用C语言解决 "约瑟夫问题" ? -
孛馥积雪: 这是c++的,稍微修改一下就是c的程序了 #include <iostream.h> #include <stdlib.h> class CircList; class CircListNode {friend class CircList;public:CircListNode(int d = 0, CircListNode *next = NULL): data( d ), link( next ) {}int data;...

德州市19623891765: 简单的约瑟夫问题C语言 -
孛馥积雪: #include<stdio.h> #include<stdlib.h> #define N 17 #define M 5 int main(void) {int person[N];int sum =17;int i=0;int j=0;for (i=0;i<17;i++){person[i]=1;}i=0;while(sum>1){if(person[i]){j++;if(j==5){person[i]=0;printf("%d ",i+1);sum--...

德州市19623891765: C语言编写程序解决约瑟夫问题 急求 先谢谢了
孛馥积雪: 先说下,直接模拟这个数列,用bool数组 判断是否已出列, 上代码: #include <stdio.h>#include <iostream.h>#include <string.h>using namespace std;int n,m,k,Count,now,counted;bool *Out;int main(){printf("请输入n,m,k(定义如题所述)\n...

德州市19623891765: 哪位能提供用C语言解决的约瑟夫问题程序 需要详细步骤解答 我是个菜鸟 望多多指教 -
孛馥积雪: #include<stdio.h>#include<malloc.h> typedef struct Node{ int num; int password; struct Node *next; }JosephNode; JosephNode *creatNode(int num){ int i; JosephNode *head,*tail; tail=(JosephNode*)malloc(sizeof(JosephNode)); head=tail; for(i=1;i<...

德州市19623891765: C语言编程:约瑟夫问题 -
孛馥积雪: #include "stdio.h" main() { int i,k,quit_num,a[30],*p; p=a; for(i=0;i*(p+i)=i+1; printf("the position of feijiaotu are:\n"); quit_num=0; k=0; i=0; while(quit_num{if(*(p+i)!=0)k++; if(k==9) {printf("%5d",*(p+i)); quit_num++; *(p+i)=0; k=0; } i++; if(i==30)i...

德州市19623891765: 哪位大哥能详细的讲解一下用C语言解决约瑟夫问题啊!跪求啊,期末纠结中,感激不尽, -
孛馥积雪: #include <stdio.h> int main() { int i, a[11], b[11]; for(i = 1; i <= 10; i++) { a[i] = i; b[i] = 1;//记录该个人有没有被输出 } int x = 5, j, l , k = 1;//x表示每隔几个数就输出一个,已经输出了的不算 for(i = 1; i <= 10; i++) { l = 0; for( ; ; ) { if(k >= 11)//如果到了第...

德州市19623891765: C语言解决约瑟夫环问题 -
孛馥积雪: 12345678 1245678 124578 24578 2478 478 47 7最后出去的是 7

德州市19623891765: C语言编程求解约瑟夫问题
孛馥积雪: 约瑟夫环的问题,我给你一个,程序首先输入小孩子个数,然后输入W 首先输出每个小孩子的编号,然后输出出列的数序,最后输出留下的小孩的编号 #include&lt;stdio.h&gt; int Josephus(int *Child,int n,int m); void main() { int *allChild,j,k,l; scanf(...

德州市19623891765: 约瑟夫环问题 用c语言数组的方法解决 -
孛馥积雪: #include#include int a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; void show_array(int *a, int n){ int i; printf("\nshowarray: "); for(i = 1; iprintf("%4d", a[i]); printf("\n"); } void cycle(int *arr, int k, int n, int len){ int count, i; int last_per = len; int last_pos = k;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网