你可以用c++解决约瑟夫环吗,不允许使用递归算法
时间: 2024-01-29 07:04:05 浏览: 57
c++程序,解决约瑟夫环问题
可以的,下面是使用C++实现的非递归算法:
```
#include<iostream>
#include<cstring>
using namespace std;
int n, m;
int josephus() {
int ans = 0;
for (int i = 2; i <= n; i++) {
ans = (ans + m) % i;
}
return ans + 1;
}
int main() {
while (cin >> n >> m) {
cout << josephus() << endl;
}
return 0;
}
```
在这个算法中,我们使用了一个循环来计算每一轮的幸存者。变量ans记录了上一轮的幸存者的编号,然后通过计算本轮幸存者在上一轮的编号,可以得到本轮幸存者的编号。最后加1是因为题目要求编号从1开始。
阅读全文