约瑟夫环(非递推版)
来源:互联网 发布:word彩页用什么软件 编辑:程序博客网 时间:2024/06/18 06:52
之前写这个的时候没有想到用递推,就是简单的暴力求解,思路也清晰比较好理解。但是递推版初学者一时半会可能很难理解,这里给出一个用数组求解约瑟夫环的代码。
题目:有n个人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡是报到3的人退出,问最后留下的是原来的第几号的那位?(有些版本要求每次退出的人的位置)
思路:
- 先是要设置一个标志数组flag[],根据输入的大小来确定,将其初始化为0,若flag[m]已退出,则置为1;
- 既然有N个人则要循环N次;
- 在数人的时候要判断是否为有效的数人,通过标志数组flag来判断;
- 如果数人累计3人,则该人退出;
- 要注意数人的时候不能超过数组本身,所以要一直对n取余。
#include "stdafx.h"#define Max_num 1000int main(){ int num = 0; int n; cin >> n; int flag[Max_num] = { 0 }; int cnt = 0; int yu = n; while (yu--) //循环N次 { while (cnt < 3) { if (flag[num % n] == 0 && cnt < 3) //有效的数人 { cnt++; num++; } else if (flag[num % n] == 1 && cnt < 3) //无效的数人 num++; if (cnt == 3) { cout << (num - 1) % n + 1 << endl; cnt = 0; flag[(num - 1) % n] = 1; //这个跳出 break; } } } return 0;}
运行结果如下:
阅读全文
0 0
- 约瑟夫环(非递推版)
- 约瑟夫问题(约瑟夫环) java
- 约瑟夫环(joseph)
- 约瑟夫环(链表)
- 约瑟夫环(JosephProblem)
- 队列(约瑟夫环)
- poj1012Joseph(约瑟夫环)
- 约瑟夫环(Java)
- 约瑟夫问题、约瑟夫环
- 九度OJ 1188:约瑟夫环 (约瑟夫环)
- 九度OJ 1189:还是约瑟夫环 (约瑟夫环)
- 约瑟夫环(约瑟夫问题的变形,LA 3882)
- 约瑟夫斯问题(约瑟夫环)?待解决
- 约瑟夫环(约瑟夫问题) 采用循环单链表实现
- Josephus问题(约瑟夫环)
- 约瑟夫环(报数游戏)
- 约瑟夫环(纯模拟)
- zoj1088(模拟/约瑟夫环)
- 用java提交一个Spark应用程序
- Spark性能调优-Shuffle调优[转]
- 洛谷p1804
- 密码(GCD有关)
- 还有3天,公布下目前后台收到的点赞数较高的几位...
- 约瑟夫环(非递推版)
- Hadoop 的三种运行模式以及伪分布式模式配置
- “风暴”洗礼后,暴风冯鑫和迅雷陈磊会怎样回顾这内忧外患一年
- 科大讯飞会是典型的AI泡沫吗
- Octave教程四:Plotting Data
- 常见的排序算法
- 迅雷玩客币更名为"链克";朱啸虎回应ofo摩拜是否合并;科学家计划在月球附近建国际空间站丨价值早报
- Faster-RCNN笔记
- Codeforces Round #448 (Div. 2) A 暴力前缀和 B 二分上下界