题目
分析
这题没什么好分析的了,看完题目,直接上代码吧!
代码
#include <iostream>
using namespace std;
void Josephus(int n){
int *p = new int[n];
for (int i = 0; i < n; i ++){
p[i] = i + 1;
}
int remainder = n;//剩余未出局人数
int k = 0;//循环遍历数组
int count = 0;//报数器:1 2 3 , 1 2 3, 1 2 3,...
while (remainder > 1){
//剩余未出局人数大于1时,游戏继续
if (p[k] != -1){
//p[k] == -1表示已经出局
count ++;
if (count % 3 == 0){
p[k] = -1;//出局
remainder --;//剩余人数减1
}
}
k = (k + 1) % n;
}
for (int i = 0; i < n; i ++){
if(p[i] != -1){
cout <<"胜出者:" << p[i] << "号" << endl;
}
}
}
转载:https://blog.csdn.net/weixin_36979214/article/details/104525524
查看评论