#include<iostream>
#include<vector>
using namespace std;
int main()
{
int m,n,k,p,number=0,i;
cout << "请输入总人数m以及循环号码n:";
cin >> m >> n;
k = m;
vector<bool> left(m, 1);
while (k > 1)
{
i = number; //i记录循环开始位置
number = n % k - 1; //number 记录要往后移动几个人
if (number < 0) number += n;
for (int j = 1; j <= number; i++)
{
if (left[(i + j) % m] != 0) j++;
}
left[i % m] = 0; //找到最后一个并置零
p = i + 1; //寻找下一个循环开始位置
while (1)
{
if (left[p % m] != 0) break;
else p++;
}
number = p%m;
k--;
}
cout << "最后剩下的人为:" << number + 1 << "号";
return 0;
}
约瑟夫
最新推荐文章于 2024-04-16 12:11:58 发布