1197约瑟夫问题
来源:互联网 发布:java aop记录日志 编辑:程序博客网 时间:2024/05/18 00:13
约瑟夫问题
Problem Description
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
Input
输入n和m值。
Output
输出胜利者的编号。
Example Input
5 3
Example Output
4
Hint
第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀
代码
//约瑟夫问题,利用尾插法建立循环链表#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;}NODE;int main(){ NODE *L=(NODE*)malloc(sizeof(NODE)),*p,*s; L->next=NULL; int n,m,i; scanf("%d%d",&n,&m); p=L; for(i=1;i<=n;i++)//尾插法建立循环链表 { s=(NODE*)malloc(sizeof(NODE)); s->data=i; p->next=s; p=s; } p->next=L->next;//让最后一个链表的下一节点指向开头 p=L->next; free(L); while(p->next!=p)//开始模拟(判断条件要注意:因为最后肯定剩下一个人,所以最后一个数据的指针域还是它本身) { for(i=1;i<m-1;i++)//注意点k-1 { p=p->next; } p->next=p->next->next;//数到m的人被杀,并将这一节点从链表中删除 p=p->next; } printf("%d\n",p->data); return 0;}
阅读全文
0 0
- 1197 约瑟夫问题
- OJ【1197】 约瑟夫问题
- 【1197】约瑟夫问题
- SDUT 1197 约瑟夫问题
- 约瑟夫问题-sdut 1197
- SDUT 1197----约瑟夫问题
- 约瑟夫问题 sdutoj 1197
- 1197约瑟夫问题
- 约瑟夫问题 sdutoj 1197
- 1197约瑟夫问题
- SDUT 1197 约瑟夫问题
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- Hibernate关系映射---双向一对多增删查改实例
- SVN目录带日志迁徙流程
- html css 滚动条样式
- 绝对地址相对地址
- hdu1510(矩阵找矩形)
- 1197约瑟夫问题
- 根据先序遍历和中序遍历创建二叉树
- Unsafe与CAS
- 连通性查询
- Linux下安装jdk
- 模块概念与使用及注意事项
- C# 中的委托和事件(详解)
- 初学 extJS 与 React 知识总结 (一)
- JVM内存模型