约瑟夫问题:

2024-03-18 17:56

1个回答
约瑟夫环:
约瑟夫环问题的一种描述是:编号为1.2.3…….n的n个人按顺时针方向围坐一圈

,每人手持一个密码(正整数),开始任意选一个整数作为报数上限值,从第一

个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密

码作为新的m值,从他顺时针下一个人开始重新从1开始报数,如此下去直到所有

的人全部都出列为止。试设计程序实现。
要求:利用循环链表存储结构模拟此过程,按照出列的顺序打印各人的编号。
测试数据:m的值初始为20:密码3 ,1,7,2,4,8,4。
正确的结果:6,1,4,7,2,3,5。
提示:程序运行后首先要求用户指定初始报数上限。然后读取各人的密码。设

n<30。


typedef struct node
{
int num,code;
struct node *next;
}lnode;
void main()
{
int i,j,key,n; /*i,j为记数器,key为输入的密码,n为人的总个数*/
lnode *p,*s,*head;
head=(lnode *)malloc(sizeof(lnode)); /*为头结点分配空间*/
p=head;
printf("Please enter the num of the person:"); /*输入人的总个数*/
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Person %d",i);
printf(" code: ");
scanf("%d",&key); /*输入各个人的密码*/
s=p;
p=(lnode *)malloc(sizeof(lnode)); /*创建新的结点*/
s->next=p;
p->num=i;
p->code=key;
}
p->next=head->next;
p=head;
head=head->next;
free(p);


p=head;
do
{
printf("\nPerson%d Code:%d",p->num,p->code); /*输出链表*/
p=p->next;
}while(p!=head);




printf("\nPlease enter your first key:"); /*输入第一个数*/
scanf("%d",&key);
do
{
j=1; /*j为记数数*/
p=head;
while(j{
s=p;
p=p->next;
j++;
}
i=p->num;
key=p->code;
printf("\nThe out of the num:");
printf("Person%d",i);
s->next=p->next;
head=p->next; /*重新定义head,下次循环的开始结点*/
free(p);
n--; /*每循环一次人是减1*/
}while(n>0);
getch();
}
相关问答
约瑟夫的简介
1个回答2024-02-09 12:35
公元37生于耶路撒冷,公元100年卒于罗马。约瑟夫是罗马帝国时期以为僧侣出身的犹太历史学家,也是一位犹太法利赛教徒(Pharisee)。 约公元64年游历罗马,在公元66年犹太起义前夕返回耶路撒冷...
全文
约瑟夫斯的著名的约瑟夫斯问题
1个回答2024-04-21 12:09
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特後,39 个犹太人与Josephus及他的朋友躲到一个洞中罩棚,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式...
全文
约瑟夫环
1个回答2022-10-26 22:26
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重...
全文
什么是约瑟夫环?
1个回答2022-10-17 18:28
约瑟夫问题的一种描述是:编号为1,2,……,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报...
全文
约瑟夫·熊彼特的主要作品
1个回答2024-02-25 13:34
《经济发展理论》1911年发表德文版,1912年英文版问世;这本书是他的成名作 。 《经济发展理论》第二版,1926年。有做大幅修改,加上副标“企业者的利润、资本、信贷、利息及景气循环”; 《景气...
全文
约瑟夫的著作有哪些?
1个回答2024-05-10 07:07
《犹太古史》>(Antiquities of the Jews)、《犹太战记》(History of the Jewish War)
约瑟夫环的由来
1个回答2023-11-27 03:51
由古罗马史学家约瑟夫提出。 约瑟夫环问题的由来可以追溯到古罗马时期的历史故事。故事中,将军约瑟夫和40名将士被困在一个洞穴中。为了避免被俘,决定每隔两个人杀死一人,直到只剩下两个人投降。约瑟夫有预谋地...
全文
先知约瑟夫是谁?
1个回答2024-03-01 10:46
是先知约瑟,他是雅各(就是以色列)的第十一个孩子(第十二个是便雅悯)。他被他的哥哥们卖到了埃及,但在给埃及法老解梦之后,做了埃及的丞相。随后有七年的大饥荒,以色列并其家族都去了埃及。 之后利未人摩西...
全文
第五人格贝拉夫人和约瑟夫有关系吗?
1个回答2024-03-04 12:37
他们之间有一点点的关系,但关系不是很重要,也不是很亲密。
约瑟夫问题的流程图
1个回答2024-02-01 01:23
这个问题用一维数组即可解决。 这是我自己写的一段代码: //功能:解决约瑟夫问题 #include #define N 9 #define K 2 #define M 3 //给数组赋值 vo...
全文
热门问答