-
题目描述
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。输入
输入n和m值。输出
输出胜利者的编号。示例输入
5 3
示例输出
4
提示
第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀
- #include <stdio.h>
- #include <stdlib.h>
- struct node
- {
- int data;
- struct node *next;
- };
- struct node *head,*a,*p;
- int main()
- {
- int m, n, i;
- scanf("%d %d",&n,&m);
- head = new node;
- head->next=NULL;
- head->data=1;
- a = head;
- for(i = 2; i <= n; i++)
- {
- node *b = new node;
- b->data = i;
- b->next = NULL;
- a->next = b;
- a = b;
- }
- a->next=head;
- node *q = head;
- i = 0;
- while(q->next!=q)
- {
- i++;
- if(i==m-1)
- {
- p = q->next;
- q->next = q->next->next;
- free(p);
- i = 0;
- q=q->next;
- }
- else
- {
- q=q->next;
- }
- }
- printf("%d",q->data);
- return 0;
- }
约瑟夫问题
最新推荐文章于 2022-03-23 20:52:46 发布