用c++数组写一个总人数7,间隔m的约瑟夫环全部代码
时间: 2024-03-09 08:44:47 浏览: 45
C++编的约瑟夫环代码
好的,以下是用C++数组写一个总人数7,间隔m的约瑟夫环的代码:
```
#include <iostream>
using namespace std;
int josephus(int n, int m) {
int arr[n]; // 创建数组
for (int i = 0; i < n; i++) {
arr[i] = i + 1; // 初始化数组
}
int index = 0;
while (n > 1) {
index = (index + m - 1) % n; // 计算出要删除的元素的索引
for (int i = index; i < n - 1; i++) {
arr[i] = arr[i + 1]; // 删除元素
}
n--;
}
return arr[0]; // 返回最后剩下的元素
}
int main() {
int n = 7;
int m = 3;
int survivor = josephus(n, m);
cout << "The survivor is: " << survivor << endl;
return 0;
}
```
该代码定义了一个 `josephus` 函数,接受两个参数 `n` 和 `m`,分别表示总人数和间隔数。函数首先创建一个长度为 `n` 的数组,并初始化为从1到 `n` 的整数。然后,通过计算每次要删除的元素的索引,从数组中删除元素,直到只剩下一个元素为止。最后,返回最后剩下的元素。
在 `main` 函数中,我们指定了总人数为 `7`,间隔数为 `3`,并调用 `josephus` 函数来求解最后剩下的元素。该程序输出最后剩下的元素的值。
阅读全文