POJ 2746 约瑟夫问题
来源:互联网 发布:复制文件夹网络共享 编辑:程序博客网 时间:2024/05/22 17:48
题目
总时间限制: 1000ms 内存限制: 65536kB
描述
约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
输入
每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:
0 0
输出
对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号
样例输入
6 2
12 4
8 3
0 0
样例输出
5
1
7
思路
水题,用数组模拟一个环就可以了。
但是,这道题debug了好久才过,原因是步数的index和遍历的index没有对应上。
细节,想好流程再写代码!
代码
#include<iostream>#include<cstring>using namespace std;int main(){ int n, m; while(cin>>n>>m){ int a[301]; memset(a, 0, sizeof(a)); if(n == 0 && m == 0){ return 0; } int start = -1; int num_left = n; int step_count = -1; int i; while(num_left > 1){ i = start; while(step_count < m - 1){ i = (i + 1) % n; if(a[i] == 0){ step_count += 1; } } num_left -= 1; step_count = -1; start = i; a[i] = 1; } for(i = 0; i < n; i ++){ if(a[i] == 0){ cout<<i + 1<<endl; } } } return 0;}
阅读全文
0 0
- poj 2746:约瑟夫问题
- POJ 2746:约瑟夫问题
- POJ 2746 约瑟夫问题
- POJ 百练 2746: 约瑟夫问题
- POJ-2746:约瑟夫问题(Java版)
- POJ读书笔记6.1 - 约瑟夫问题 2746
- POJ 1012 约瑟夫问题
- poj 1012(约瑟夫问题。。。)
- POJ 1012 约瑟夫问题
- POJ 3517 约瑟夫问题
- POJ 1012(约瑟夫问题)
- POJ 3517 约瑟夫问题
- poj 1012 约瑟夫问题
- 约瑟夫问题POJ
- POJ 1012 约瑟夫问题
- poj 2244(约瑟夫问题。。。)
- POJ 1012 Joseph 约瑟夫问题
- POJ 1012 Joseph 约瑟夫问题
- java 中的基本数据类型
- ES6常用命令与介绍
- java中的数据类型
- Mysql总结5-mysql优化
- Properties
- POJ 2746 约瑟夫问题
- React学习(二)props属性
- csp ccf输入字符串的坑-2017 9 第三题json字符串处理
- 成员初始化列表
- redis部署和主从配置
- python第一章 基础入门以及一些简单实例
- 公钥,私钥,数字签名,证书
- hdu 4417 主席树
- 3、Tensorflow:TensorFlow深度学习入门(下)