报数出圈
来源:互联网 发布:tensorflow gpu 编辑:程序博客网 时间:2024/06/06 00:45
/*设有n个人围成一圈并编号为1-n。由编号为k的人进行1到m的报数,数到m的人出圈。接着再从他的下一个人重新开始1到m的报数,直到所有人都出圈。请输出出圈人的次序*/#include <stdio.h>#include <stdlib.h>typedef struct node{char data; //data为节点的数据信息struct node *next; //next为指向后继节点的指针}LNode;void Josephus(int n, int m, int k){LNode *p, *q;int i;p = (LNode *)malloc(sizeof(LNode));q = p;for (i = 1; i < n; i++) //从编号k开始建立一个单链表{q->data = k;k = k % n + 1;q->next = (LNode *)malloc(sizeof(LNode));q = q->next;}q->data = k;q->next = p; //链接成循环单链表,此时p指向编号为k 的节点while (p->next != p) //当循环单链表中的节点个数不为1时{for (i = 1; i < m; i++){q = p;p = p->next;} //p 指向报数为m 的节点,q 指向报数为m-1 的节点q->next = p->next; //删除报数为m 的节点printf("%4d", p->data); //输出出圈人的编号free(p); //释放被删节点的空间p = q->next; //p 指向新的开始报数节点}printf("%4d", p->data); //输出最后出圈人的编号}int main(){int n, m, k;//输入总人数n,报数个数m 和起始报数人序号kprintf("Please input n, m, k:\n");scanf("%d,%d,%d", &n, &m, &k);Josephus(n, m, k);printf("\n");return 0;}
阅读全文
0 0
- 报数出圈
- 100个人报数,数到10的人出圈
- 【转】N个人围成一圈报数逢三出圈
- 出圈
- 【出圈】
- n人围成一圈报数,数到m的人出圈(据评论所写,谢谢zf)
- n人围成一圈报数,数到m的人出圈(据软件设计师教程上的思想编写)
- 50人围一圈,从第一个人报数,3和3的倍数出圈,最后剩下一个人是几号,java实现
- 有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他下一个人重新开始1到m的报数,如此下去直到全部都出圈为止。现要求按出圈次序.给出n人的顺序表
- 报数
- 报数
- 报数
- 报数
- 报数
- 报数
- 报数
- 报数
- 报数
- Dubbo负载均衡:一致性Hash的实现分析
- Bootstrap——分页,翻页,标签,缩略图
- Bootstrap——警告,进度条,列表组,面板,Well
- struts2_day03_10_从值栈获取字符串_11_从值栈获取对象
- 解决Win10无法安装.Net Framework 3.5,错误代码0x800F081F
- 报数出圈
- 利用bootstarp-table实现ajax分页表格
- 王一三学习笔记 | 添加200个元素到ArrayList后内部的数组大小是多少?
- android nexus私服的使用
- python 生成随机图形验证码
- 100个小学生猜字谜大全及答案
- http协议学习总结
- 机器学习---决策树(decision tree)算法
- LeetCode#671 Second Minimum Node In a Binary Tree (week13)