2:约瑟夫问题
来源:互联网 发布:阿里云百度云差距 编辑:程序博客网 时间:2024/06/10 17:54
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
- 输入
- 输入包含两个整数,第一个是n,第二个是m (0 < m,n <=300)。
- 输出
- 输出包含一行,即最后猴王的编号。
- 样例输入
12 4
- 样例输出
1
源代码
#include <stdio.h>#include <stdlib.h>typedef struct LNode{int data;struct LNode *next;}LNode;LNode* CreateLinkList(int n){LNode* L = NULL;LNode* p = NULL;LNode* q = NULL;int i;L = (LNode *)malloc(sizeof(LNode));L->next = NULL;p = L->next;q = L;for (i = 1; i <= n; i++){p = (LNode *)malloc(sizeof(LNode));p->next = NULL;p->data = i;q->next = p;q = q->next;}q->next = L->next;return L;}LNode * ysf(LNode *L, int m, int n){LNode* p = NULL;LNode* q = NULL;int i;p = q = L->next;if (1 != m){while (p != p->next){for (i = 1; i != m; i++){if (2 == m){q = q->next;}else{p = q;q = q->next;}}p->next = q->next;free(q);p = p->next;q = p;}}else{while ((--n)>0){p = p->next;free(q);q = p;}L->next = p;}return p;}int main(void){LNode* L = NULL;LNode* p = NULL;int m, n;scanf("%d%d", &n, &m);L = CreateLinkList(n);p = ysf(L, m, n);printf("%d", p->data);return 0;}
0 0
- 约瑟夫问题2
- 2:约瑟夫问题
- 约瑟夫问题2
- 约瑟夫问题2
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- HTML5 postMessage 和 onmessage API 详细应用
- 第二次使用回调
- 理解Bellman Equation
- Ubuntu 12.04下安装Oracle Express 11gR2
- EF:插入记录失败,提示当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
- 2:约瑟夫问题
- ubuntu中启动oracle数据库
- Rails中如何避免N+1问题
- C++数组(一维、二维、三维)的动态分配new、初始化memset和释放delete
- IATHOOk相关
- 截取系统 API 调用
- opencv 矩阵合并
- POJ 2528 Mayor's posters 线段树离散化+区间更新
- ubuntu上svn的简单用法