约瑟夫环(单向循环链表)_C语言「抄作业」

如题所述

约瑟夫环(Josephus problem)

故事背景

1世纪的犹太历史学家Josephus曾记载,罗马人占领乔塔帕特后,他与40个犹太战友躲入洞中,选择了以抽签的方式决定死亡顺序。41人围成圆圈,依次报数,每报到3的人死亡,从下一人起重新报数,直至所有成员死亡。故事中,Josephus与另一人仅存时,说服了对方向罗马军队投降。

约瑟夫环问题

该问题求解Josephus与最后存活的另一人最初的位次。具体而言,当剩余人数为n时,从第一个人开始,每报数k次后,淘汰当前报数者,直到最后剩下2人。最终,Josephus与另一人分别位于第16和第31的位置上。

示例输出

在C语言抄作业系列中,提供了关于约瑟夫环问题的代码实现。该实现旨在解决Josephus与另一人最初位次的计算问题。作为一个计算机科学专业毕业多年后转行至产品经理的人,从当年的作业中搜集了这部分代码,供参考。
温馨提示:内容为网友见解,仅供参考
无其他回答

约瑟夫环(单向循环链表)_C语言「抄作业」
在C语言抄作业系列中,提供了关于约瑟夫环问题的代码实现。该实现旨在解决Josephus与另一人最初位次的计算问题。作为一个计算机科学专业毕业多年后转行至产品经理的人,从当年的作业中搜集了这部分代码,供参考。

C语言编程丨循环链表实现约瑟夫环!真可谓无所不能的C!
通过循环链表,可以高效地模拟上述淘汰过程,实现约瑟夫环问题的解决。循环链表在约瑟夫环问题中的应用揭示了其强大的功能,以及在特定场景下的高效解决方案。通过结合循环链表的特性,可以构建出简洁、高效的代码实现。

用c语言实现约瑟夫环
正好之前写过基础的约瑟夫环,稍作修改就可以满足你的题目 include <stdio.h>#include <stdlib.h>typedef struct _node { int id; int key; struct _node *next;} Linklist;int main() {int n, m;scanf("%d %d", &n, &m);int i, count = 0;Linklist *head = (Linklist*...

求c语言用循环链表编写约瑟夫环代码(速度求解)!!!
p->next=head; \/*使链表尾指向链表头 形成循环链表*\/ return head;} void printlinklist(NODE *p,int n){ int i;NODE *q = p;if(NULL == q->next){ printf("the list is NULL!");return;} printf("所有玩家的信息列表:\\n");for(i=1;i<=n;i++){ if(NULL == q){ pri...

约瑟夫环问题怎么解决啊?请用C语言写代码,谢谢!
} Node::Node(Node_entry item, Node *add_on){ entry = item;next = add_on;} --- include<iostream.h> \/\/文件2 typedef int Node_entry;struct Node { \/\/ data members Node_entry entry;Node *next;\/\/ constructors Node( );Node(Node_entry item, Node *add_on = NULL);}...

关于约瑟夫环问题的实验报告书中详细设计
单向循环链表:LinkList H; \/\/表头指针 Node *Q,*Pre;\/\/*Q指新建结点,*pre指向当前工作结点 Q=(Node*)malloc(sizeof(Node));构造函数:void InitList(LinkList *H); \/\/初始化循环链表 void InPut(LinkList H,int *A);\/\/插入结点 void DelList(LinkList H,int *x, int*a); ...

求助, 约瑟夫环问题(C语言)
}\/\/循环结束后,q->next就是链表头 printf("last: num-%d val-%d\\n",q->num,q->val);printf("请输入初值: ");scanf("%d",&m);if(m<=0){ printf("错误!\\n");return(1);} m=m-1;\/\/提前使q停下,p=q->next,p就是目标。printf("结果是:\\n");printf("出列顺序是: "...

用C语言解决一个实际问题(不要太长)
约瑟夫环(很有名的数学问题)已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。void JOSEPHUS(int n,int k,int m) \/\/n为总人数,k...

求用循环队列解决约瑟夫环问题的C语言代码,急,速度!!!
他们都是用链表做的。。我没用链表做。。。很简单的写了一个。。。include <iostream.h> void Fmade(int x, int y, int z);void main(){ int a, b, c;\/\/t i, j, k;\/\/t aa[100], b[100];cout<<"请输入总人数:";cin>>a;cout<<endl<<"请输入开始位子:";cin>>b;cout<...

C++编程:约瑟夫环问题。
\/\/ 用于链表的指针 struct Prisoner * pre;struct Prisoner * next;};class JosephCircle { public:\/\/ 基本的约瑟夫构造函数 JosephCircle(int N,int S,int D);\/\/ 发展的约瑟夫构造函数 JosephCircle(int N,int S,int M,int password[]);\/\/ 输出约瑟夫环 void print();\/\/ 开始处决犯人 void...

相似回答
大家正在搜