用c++数组解决约瑟夫环问题
时间: 2023-07-31 10:09:04 浏览: 101
分别用数组和链表解决约瑟夫环问题。 数组和链表.doc
好的,以下是用C++数组解决约瑟夫环问题的代码:
```cpp
#include <iostream>
using namespace std;
int main()
{
int n, m;
cout << "请输入人数n和报数m:";
cin >> n >> m;
int a[n+1]; // 数组下标从1开始
for (int i = 1; i <= n; i++)
a[i] = i; // 初始化数组
int count = 0;
int i = 1;
while (count < n)
{
if (a[i] != 0) // 如果这个人还没有出列
{
count++;
if (count % m == 0) // 报数到m
{
cout << a[i] << " ";
a[i] = 0; // 标记这个人已经出列
}
}
i++;
if (i > n) i = 1; // 如果已经到了最后一个人,重新从第一个人开始报数
}
cout << endl << "约瑟夫环问题求解完毕!" << endl;
return 0;
}
```
代码思路:
1. 首先输入总人数n和报数m;
2. 利用数组初始化每个人的编号;
3. 从第一个人开始报数,如果这个人还没有出列,就继续报数,直到报到m,这个人就出列了,并且在数组中标记为0;
4. 重复步骤3,直到所有人都出列为止。
注意:数组下标从1开始,因为题目中的人数是从1开始编号的。
阅读全文