Josephus问题
来源:互联网 发布:安全软件 编辑:程序博客网 时间:2024/05/16 08:29
Josephus问题:n个人围成一个圈,记为1、2、… 、n ,从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一人…
#include<stdio.h>#include<malloc.h>typedef struct List { int data; struct List *next;} LinkList;int main() { LinkList *L, *r, *s; L = (LinkList *)malloc(sizeof(LinkList)); r = L; int n, i; int k; printf("n个人,报到k出圈,输入n、k:"); scanf("%d%d", &n, &k); for (i = 1; i <= n; i++) { s = (LinkList *)malloc(sizeof(LinkList)); s->data = i; r->next = s; r = s; } r->next = L->next; LinkList *p; p = L->next; while (p->next != p) { for (i = 1; i < k - 1; i++) { p = p->next; } printf("%d ", p->next->data); p->next = p->next->next; p = p->next; } printf("%d\n", p->data); return 0;}
#include<stdio.h>int main() { int n, k; printf("n个人,报到k出圈,输入n、k:"); scanf("%d%d", &n, &k); int i; int a[101]; int dead = 0; int num = 0; for (i = 1; i <= n; i++) { a[i] = i; } for (i = 1; ; i++) { if (i > n) { i = i%n; } if (a[i] > 0) num++; if (k == num && dead != n - 1) { printf("%d ", a[i]); num = 0; a[i] = 0; dead++; } else if (k == num && dead == n - 1) { printf("%d\n", a[i]); break; } }}
阅读全文
0 0
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- josephus 问题
- Josephus问题
- Josephus问题
- josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- Josephus问题
- POJ P1837 Balance
- [codeforces 86C]补全AC自动机上DP
- yum 仓库
- 25. Reverse Nodes in k-Group
- UVA 10480 Sabotage (输出最小割所用边)
- Josephus问题
- 【OpenCV】图像变换(五)-仿射变换和透视变换
- Python: PS 滤镜--表面模糊
- BZOJ 1659: [Usaco2006 Mar]Lights Out 关灯 迭代加深搜索
- 【学习笔记】计算机网络-Ping命令(一)
- buttonknife依赖
- 属性动画(蓝球下移)
- (angularjs+jQuery)商品表(增删改查)+表单判断+各种排序方式
- c++链表