#include<iostream>
using namespace std;
int main() {
int arr[100] = { 0 };
int n, k;
int i, j;
int cnt = 0;
cin >> n >> k; //n个人,数到k出列
//初始化
for (i = 0; i < n; i++)
arr[i] = 1;
i = 0;
for (j = 0; j < n; j++) { //一共有n个人,循环n次
int m = 0;
//找出列的人
while (1) {
if (arr[i] == 1) //有效位置时数数
m++;
if (m == k) //数到第k个出列
break;
i = (i + 1) % n; //令i加一,并且i的范围从0到n - 1
}
cout << i + 1 << ' ';
arr[i] = 0; //出列后赋值0
}
}
约瑟夫问题
最后发布:2020-11-25 22:55:04首次发布:2020-11-25 22:55:04