约瑟夫环问题
来源:互联网 发布:centos 桥接模式 设置 编辑:程序博客网 时间:2024/06/08 15:25
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。
以上出自必应网典,最通常的写法是用链表,在网上看到有人用数组,我认为代码冗余过长,下面给出自己的解法,欢迎大家批评和指正。
#include<stdio.h> #define MAX 100 int main(int argc,char *argv[]) { int p_num; int c_num; printf("请输入总人数:\n"); scanf("%d",&p_num); printf("请输入数到第几个数就出局:\n"); scanf("%d",&c_num); int a[MAX] = {0}; int i; for(i = 0;i < p_num;i++) //初始化编号 { a[i] = i + 1; } i = p_num; int j = -1; int k; while(i--) //每次淘汰一人 { for(k = 0;k < c_num;k++) //如果报数到3就出局,循环三次找到不等于-1的数 { j++; while(a[j % p_num] == -1) j++; } if(i == 0) //最后只剩下一个数 { printf("\n最后一个人号码为:%d\n",a[j % p_num]); break; } printf("%4d",a[j % p_num]); a[j % p_num] = -1; //要淘汰的标记位为-1 } return 0; }
0 0
- 约瑟夫问题、约瑟夫环
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- leetcode 24. Swap Nodes in Pairs
- 如何在Unity3D实现Admob
- 我的MVC框架————GothaMVC(3)view层的实现
- table细边框
- IOS银联支付
- 约瑟夫环问题
- 关于找不到印社属性的问题的解决
- Parcel: unable to marshal value或Parcel: unable to marshal value null 问题
- 与平安对接保险随笔
- 【备查】View, widget ,ViewGroup, LinearLayout等layout 结构图
- 模糊神经网络PID控制的一个例子
- 两个tomcat同时启动的方法
- Jquery经典案例总结
- 今日BBC