P1996 约瑟夫问题题解
理解与感悟
用队列思想解决约瑟夫问题是最直白的,看来不管是哪个问题,都有一种最合适的解法。
#include <bits/stdc++.h>
using namespace std;
int n, m;
queue<int> q;
int main() {
//读入n个人,数到m的人
cin >> n >> m;
for (int i = 1; i <= n; i++) q.push(i);//放入初始化小朋友
while (!q.empty()) { //洛谷网站上的描述
for (int i = 1; i < m; i++) {
q.push(q.front());
q.pop();
}
printf("%d ", q.front());
q.pop();
}
return 0;
}