约瑟夫问题 灰太狼 2022-04-16 00:46 198阅读 0赞 ## 约瑟夫问题 ## ![在这里插入图片描述][20181114211743434.jpg] * 题目描述: 开始有5个人围成圆形,从0号开始,数2个人,谁被数到就出列。比如第一次是2,2出列,再从3开始数,第二次数到0,0再出列。循环下去,直到最后一位。 输出:出列的人顺序 -------------------- ## 代码实现(利用循环链表+企业链表的原理) ## #include <stdio.h> #include <stdlib.h> #define NUMBER_OF_PERSON 8 #define STRIDE 3 typedef struct PNODE { struct PNODE* next; }pNode; typedef struct PERSON { pNode node; int id; }Person; Person Table[NUMBER_OF_PERSON];// 定义Person 数组 int main(void) { //给数组赋值 for(int i=0;i<NUMBER_OF_PERSON;i++) { Table[i].id=i; if(i<NUMBER_OF_PERSON-1) Table[i].node.next=(pNode*)&Table[i+1]; else//最后一个next指向第一个,这样才能循环 Table[i].node.next=(pNode*)&Table[0]; } pNode* pCurrent = (pNode*)&Table[0]; int Stride = STRIDE; int NumOfPerson = NUMBER_OF_PERSON; while(NumOfPerson>1)//当有两个或者以上的人,才有意义 { if(Stride==1)//已经数到stride-1,需要将下一个节点删除 { NumOfPerson--; Stride = STRIDE; Person* p = (Person*)pCurrent->next;//打印要删除的节点 printf("%d ",p->id); pCurrent->next = pCurrent->next->next;//删除节点 pCurrent=pCurrent->next;//跳到删除节点的下一个节点 continue;//直接执行下次循环,stride不能--,否则和STRIDE=2相同效果 } pCurrent =pCurrent->next; Stride--; } Person* p = (Person*)pCurrent; printf("%d ",p->id); return 0; } 结果: ![在这里插入图片描述][20181114224320737.png] [20181114211743434.jpg]: /images/20220416/08e09b53e440482a8862dbc13b083e49.png [20181114224320737.png]: /images/20220416/0374953e2f7f415a9b615f1fc72e0baf.png
相关 约瑟夫问题 约瑟夫问题 作者:Ackarlix 这是一个非常经典的问题:n个骑士编号1,2,...,n,围坐在圆桌旁,编号为k的骑士从1开始报数,报到m的骑士出列,然后下一个位置再从1 刺骨的言语ヽ痛彻心扉/ 2022年09月19日 13:29/ 0 赞/ 201 阅读
相关 约瑟夫问题 约瑟夫问题如下: n个人围成一圈,从1号开始报数,报到m就退出,剩下的人从下一个人开始继续报数。。。问最后剩下的是谁?也可问每个人的死亡顺序. 这一题在数据量比较小的 太过爱你忘了你带给我的痛/ 2022年08月10日 17:55/ 0 赞/ 146 阅读
相关 约瑟夫问题 约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然 后重新开始报数,问最后自杀的人是谁? ![Center][] 第一种方法:循环思想 待我称王封你为后i/ 2022年08月08日 00:39/ 0 赞/ 181 阅读
相关 约瑟夫问题 适合队列初学者 \include<queue> //队列 头文件 queue<int>q; //定义队列q,I ゝ一世哀愁。/ 2022年08月04日 04:10/ 0 赞/ 176 阅读
相关 约瑟夫问题 Problem Description n个人想玩残酷的死亡游戏,游戏规则如下: n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被 £神魔★判官ぃ/ 2022年07月14日 12:44/ 0 赞/ 174 阅读
相关 约瑟夫问题 约瑟夫问题 Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [ Statis 分手后的思念是犯贱/ 2022年06月18日 05:24/ 0 赞/ 178 阅读
相关 约瑟夫问题 <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td> <td>2017 ╰半夏微凉°/ 2022年06月02日 08:57/ 0 赞/ 273 阅读
相关 约瑟夫问题 1.知识点:循环链表 2.题意:n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,请输出最后一个人的编号 3.注意事项: 心已赠人/ 2022年05月30日 04:46/ 0 赞/ 170 阅读
相关 约瑟夫问题 Problem Description n个人想玩残酷的死亡游戏,游戏规则如下: n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人 我就是我/ 2022年05月16日 06:06/ 0 赞/ 184 阅读
相关 约瑟夫问题 约瑟夫问题 ![在这里插入图片描述][20181114211743434.jpg] 题目描述: 开始有5个人围成圆形,从0号开始,数2个人,谁被数到就 灰太狼/ 2022年04月16日 00:46/ 0 赞/ 199 阅读
还没有评论,来说两句吧...