1010: 约瑟夫(Joseff)问题求解(1)
Description
约瑟夫(Joseff)问题求解。n个人围成一圈,编号依次为1,2,。。。。n,从第一个人开始报数,m号出圈,再从下一个开始报数,。。。,m号出圈,直至所有人出圈。求出圈的次序。要求利用数组实现存储。
Input
输入数据依次为n和m
Output
Sample Input
10 5
Sample Output
5 10 6 2 9 8 1 4 7 3
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,m;
cin >> n >> m;
vector<int> vec(100,0);
for(int i = 1; i <= n; i++)
vec[i] = i;
int i = 1;
int count = 0;
int t = 0;
while(t < n) {
if(vec[i])count++;
if(count == m) {
cout << vec[i] << " ";
vec[i] = 0;
t++;
count = 0;
}
i++;
i = (i - 1) % n + 1;
}
return 0;
}
本文详细解析了约瑟夫问题的解决方法,并提供了一个使用数组实现的C++代码示例。该示例通过循环和计数的方式确定了指定人数和报数规则下每个人出局的顺序。
572

被折叠的 条评论
为什么被折叠?



