[1197]约瑟夫问题 (循环链表)SDUT
来源:互联网 发布:linux跟踪路由命令 编辑:程序博客网 时间:2024/05/18 12:04
约瑟夫问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
输入
输入n和m值。
输出
输出胜利者的编号。
示例输入
5 3
示例输出
4
#include <stdio.h>#include <stdlib.h>struct node{ int data; struct node *next;};int n,m;struct node *creat()//循环链表的建立{ struct node *head,*tail,*p; int i; head=(struct node *)malloc(sizeof(struct node)); head->next=NULL; head->data=1;//此处头结点并不是虚节点 tail=head; for(i=2;i<=n;i++) { p=(struct node *)malloc(sizeof(struct node)); p->data=i; p->next=NULL; tail->next=p; tail=p; } tail->next=head;//让最后一个节点指向头结点(循环链表建立的关键) return head;};void baoshu(struct node *head)//报数过程的操作{ int num=0;//猴子报数的计数变量 int count=0;//统计被杀的人的个数 struct node *p,*q; q=head; while(q->next!=head) q=q->next; p=head; while(count!=n-1) { num++; if(num%m==0)//数到m的人被删 { q->next=p->next; free(p); p=q->next; count++; } else { q=p; p=p->next; } } printf("%d\n",q->data);}int main(){ struct node *head; scanf("%d %d",&n,&m); head=creat(); baoshu(head); return 0;}
0 1
- [1197]约瑟夫问题 (循环链表)SDUT
- sdut 1197-约瑟夫问题(循环链表)
- sdut oj1197 约瑟夫问题(循环链表)
- SDUT 1197 约瑟夫问题
- 约瑟夫问题-sdut 1197
- SDUT 1197----约瑟夫问题
- SDUT 1197 约瑟夫问题
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表)
- 约瑟夫问题(循环链表)
- 循环链表范例(约瑟夫问题)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表)
- 约瑟夫环问题(循环链表)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题(循环链表实现)
- 约瑟夫环问题(循环链表)
- 约瑟夫问题-循环链表
- IP地址变动后,EM不能启动的解决办法
- C语言的全局变量与局部变量
- 程序框架设计—WS
- 然后才开始渲染ccnode以及它的子节点,最后在afterDraw()才会绘制到帧缓存中
- 8中基本数据类型
- [1197]约瑟夫问题 (循环链表)SDUT
- 从零开始学android<数据存储(2)Internal Storage内部存储.三十六.>
- 如何把UCos-ii_在STM32上的移植
- 隐藏造型
- 深入浅出之MFC整理-----青铜笔记
- nl80211 & cfg80211 库是如何工作的?
- RT-Thread 学习笔记(四)---用Eclipse构建编译环境
- jQuery Sizzle.find [ 源码分析 ]
- 使用v7包,actionbar的问题