第一次用链表!【练习】
来源:互联网 发布:iphone 读书软件 编辑:程序博客网 时间:2024/05/21 07:11
/*n 个人围成一个圆圈,第1个人从1开始顺时针报数, 报到m的人,令其出列。然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去, 直到圆圈中只剩一个人为止。此人即为优胜者。要求 输入 n 和m, 输出优胜者例如 n = 8 m = 3*/#include<stdio.h>#include<malloc.h>typedef struct Dulnode{int num;struct Dulnode *next;}Dulnode, *Node;Node InitDul(Node L){Node p;if(!(p = (Node)malloc(sizeof(Dulnode)) ) )return 0;p->next = NULL;L = p;return L;}Node CreatDul(Node L, int n){Node p, q;int i;p = L;p->num = 1;for(i = 2; i <= n; i++){if( !(q = (Node)malloc( sizeof(Dulnode) )))return 0;q->num = i;p->next = q;p = q;}p->next = L;return L;}int SolveDul(Node L, int n, int m){int i, j;Node p, q;p = L;for(i = 1; i < n; i++){for(j = 1; j <= m-2; j++)p = p->next;q = p->next;p->next = q->next;free(q);p = p->next;}return p->num;}int main(){int n, m, ans;Node L;while(scanf("%d %d", &n, &m) != EOF){if(m == 1)printf("%d\n", n);else{L = InitDul(L);L = CreatDul(L, n);ans = SolveDul(L,n,m);printf("%d\n", ans);}}return 0;}
纪念一下!
0 0
- 第一次用链表!【练习】
- 第一次练习
- 第一次写博客,练习练习
- 第一次作业编码练习
- 指针第一次练习
- 第一次JAVA练习
- ACM第一次练习-1004
- 第一次打字练习
- 第一次盲打练习
- SDUT第一次打字练习
- sdut__oj__第一次打字练习
- 第一次打字练习
- 第一次打字练习
- python爬虫第一次练习
- 第一次JAVA练习20170923
- 第一次练习,codility
- 改正第一次练习
- TopCoder第一次练习心得
- github 初次使用心得
- spinner如何刷新数据
- bootstrap 流式布局 引入文件 bootstrap-combined.min.css
- poj2375 强联通分量
- Codeforces 455A Boredom (dp)
- 第一次用链表!【练习】
- 10817 - Headmaster's Headache(状态压缩)
- jsonp原理
- 第十七篇 EPON注册过程
- 从头到尾彻底理解KMP
- 数据加密和数据签名的本质区别 解释
- 自学编程的——“3遍读书法”
- 1004 Financial Management
- 自定义Launcher设为默认应用