Josephus问题解决方法四(循环数组)
来源:互联网 发布:淘宝运营公司那家强 编辑:程序博客网 时间:2024/05/23 00:09
前几篇都是运用了循环单链表的知识解决该问题(http://blog.itpub.net/29876893/viewspace-1815055/,http://blog.itpub.net/29876893/viewspace-1850077/,http://blog.itpub.net/29876893/viewspace-1851818/),下面用循环数组来解决该问题。运用的解题思路和第三篇类似,给元素设置标识,退出循环的条件就是被标识的元素总数=学生总数。下面给出代码:
点击(此处)折叠或打开
- #include<iostream>
- #define MAX_SIZE 10
- using namespace std;
- int j,flag,q,sizeA;
- char lastone;
- void searchnote(char *,int);
- void searchnote(char *A, int n) {
- cout << "出队的顺序依次是:" << endl;
- for (int i = 0;i<=sizeA;i++){ //扫描数组
-
- if (i == sizeA) { //如果循环整个数组后,则取余,构成循环数组
- i%=sizeA;
- }
- if(A[i] == NULL) {
- continue;
- }
- q++;
- if (q == n) { //若q等于间隔数n,则此时A[i]就是被标识的元素,且q置为0
- cout << A[i]<< " ";
- flag++;
- if (flag == sizeA) { //该步骤是为了打印最后一个同学编号,否则最后一个同学别标识为NULL
- lastone = A[i];
- }
- A[i] = NULL;
- q = 0;
- }
- if (flag == sizeA) { //循环退出条件
- cout << endl;
- cout << "获胜的同学是:" << endl;
- cout << lastone;
- break;
- }
- }
- }
- int main() {
- cout << "请输入同学的编号:" << endl;
- char note[MAX_SIZE];
- for (char ch; cin >>ch, j++) { //构建数组
- note[j] = ch;
- cout << note[j] << " ";
- sizeA++;
- }
- cout << endl;
- searchnote(note, 4);
- cout << endl;
- }
0 0
- Josephus问题解决方法四(循环数组)
- Josephus问题解决方法三(单向循环链表标识法)
- Josephus问题解决方法五(递归)
- Josephus问题解决方法一
- Josephus问题解决方法二
- 从面向结构到面向对象-----josephus问题(方法四:面向对象的实现)
- 从面向结构到面向对象-----josephus问题(方法一:数组的应用)
- Josephus环问题解决
- josephus Problem 初级(使用数组)
- Spring源码学习--Bean对象循环依赖问题解决(四)
- JAVA Josephus(数组实现)
- 欢迎界面循环问题解决方法
- Josephus问题 循环链表
- 循环链表解josephus问题
- 循环链表应用-Josephus
- 循环遍历数组方法
- 数组循环分组方法
- 【IOS】IOS开发问题解决方法索引(四)
- JavaScript闭包初探
- 关于Myeclipse下Classes不显示
- kali用scim安装中文输入法
- 16_Java 数组
- 一些疑难问题解决方法
- Josephus问题解决方法四(循环数组)
- image 相机vc+环境配置
- BestCoder Round #64 (div.2) HDOJ5585 Numbers(模拟)
- Ubuntu 14.04.2 移植FFmpeg 2.8.3 到Android平台
- TCP/IP详解卷1 读书笔记:第十八章 TCP连接的建立与终止
- 终于学会了在github上创建一个release、tag了
- Android下的图片缓存简单实现(避免软引用缓存)
- oauth认证四种模式中的第一种oauthation code模式
- POJ A Simple Problem with Integers 3468(线段树区间更新)