约瑟夫环问题
来源:互联网 发布:淘宝申请介入要几天 编辑:程序博客网 时间:2024/06/07 05:25
约瑟夫问题:
n个猴子按顺时针方向围成一个圈选大王,(编号从1---n),从第一个猴子开始报数,一直数到m,数到m的猴子就出列,剩下的猴子再接着从1开始报数,就这样一直到所有的猴子都出列,
分析:
我们可以模拟人工的办法,把n个数写在纸上排成一个圈,然后从 1 开始报数,没数到 m 的时候就把 m 划掉。循环做下去,直到所有的数都已经划掉为止。
我们按人工的方法写一个模拟的程序,就可以了。
用数组loop[]来存放 n 个数 相当与n个数排成的圈,用整形变量 ptr 来指向当前数到的数。划掉一个数的操作就是把它置为 0 ,并在数的时候跳过为 0 的数。
代码如下:
#include <stdio.h>int main (){int n,m;int loop[305];while (~scanf ("%d%d",&n,&m)){for (int i=0;i<n;i++)loop[i] = i+1;int ptr = 0;for (int i=0;i<n;i++){int cout = 0;//记录数了几个数while (cout < m){while (loop[ptr]==0) //跳过所有划掉的数ptr = (ptr+1) % n;cout ++; ptr = (ptr+1) % n; //循环移动下一个位置}ptr -- ; //回退一个位置。if (ptr < 0)ptr = n-1;if (i==n-1)printf ("%d\n",loop[ptr]);else printf ("%d ",loop[ptr]);loop[ptr] = 0 ;}}return 0;}
0 0
- 约瑟夫问题、约瑟夫环
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 千千静听2014 v8.3.6 官方最新版
- 79 Java BufferedReader 获取键盘输入
- 半承雨露,半入尘埃
- 静态查找--改进版,比较时间节约一半
- 使用Skin#美化界面
- 约瑟夫环问题
- 4444
- 静态查找
- ORACLE WITH AS 用法
- BDD 与 TDD
- csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)
- 1>LINK : fatal error LNK1561: 必须定义入口点
- NDK 与 JNI 的关系
- 《大话设计模式》—— 读后感(23)烤羊肉串引来的思考——命令模式