【1197】约瑟夫问题
来源:互联网 发布:大学生it就业培训中心 编辑:程序博客网 时间:2024/05/18 02:29
约瑟夫问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
输入
输入n和m值。
输出
输出胜利者的编号。
示例输入
5 3
示例输出
4
提示
第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀
#include <stdio.h>#include <stdlib.h>struct node{ int num; struct node *next;};struct node *creat(int n){ struct node *head, *tail, *p; int i; p=(struct node *)malloc(sizeof(struct node)); p->num=1; p->next=NULL; head=p; tail=p; for(i=2;i<=n;i++) { p=(struct node *)malloc (sizeof(struct node)); p->num=i; tail->next=p; tail=p; p->next=NULL; } tail->next=head; return head;}int kill(struct node *head,int m,int n){ int num=0; int count=0; struct node *p, *q; q=head; while(q->next!=head) q=q->next; while(count<n-1) { p=q->next; num++; if(num%m==0) { q->next=p->next; free(p); count++; } else q=p; } return q->num;}int main(){ int n, m; struct node *head; scanf("%d%d",&n,&m); head=creat(n); printf("%d\n",kill(head,m,n)); return 0;}
0 0
- 1197 约瑟夫问题
- OJ【1197】 约瑟夫问题
- 【1197】约瑟夫问题
- SDUT 1197 约瑟夫问题
- 约瑟夫问题-sdut 1197
- SDUT 1197----约瑟夫问题
- 约瑟夫问题 sdutoj 1197
- 1197约瑟夫问题
- 约瑟夫问题 sdutoj 1197
- 1197约瑟夫问题
- SDUT 1197 约瑟夫问题
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 深入理解Android的startservice和bindservice
- 第二章 VHDL语言元素
- iOS 手写代码UICollectionView
- 自媒体形式下的个人设计(面向用户)—博客,QQ空间等个人主页的设计
- UVa 1601 - The Morning after Halloween(双向BFS版)
- 【1197】约瑟夫问题
- 自动监控进程并启动的shell脚本
- thinkphp left join 一定要写上left
- linux ftp和lftp 命令小结
- codeforces 46C Hamsters and Tigers(枚举)
- 黑马程序员——Java基础---深入理解面向对象(封装继承和多态)
- #ifdef __cplusplus extern "C" { #endif”的定义
- IOS的app图标去掉玻璃效果
- Xcode6 使用MJRefresh