#include<bits/stdc++.h>
#define per(i,a,n) for(int i=a;i<=n;i++)
#define pre(i,n,a) for(int i=n;i>=a;i--)
#define endl '\n'
using namespace std;
typedef long long ll;
map<int, int> mp;
pair<ll, ll> p;
const double eps = 1e-9;
const long long mod = 998244353;
const long long inf = 2e12 + 7;
const int N = 1e4;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n, m; cin >> n >> m;
list<int> node;
for (int i = 1; i <= n; i ++) node.push_back(i);
list<int> :: iterator it = node.begin();
while (node.size() > 1)
{
for (int i = 1; i < m; i ++)
{
it ++;
if (it == node.end()) it = node.begin();//如果到了最后一个就返回到第一个
}
//cout << *it << " ";
list<int> :: iterator next = ++it;//next相当临时储存
if (next == node.end()) next = node.begin();
node.erase(--it);
//cout << *it << " ";
it = next;
//cout << *it << " ";
}
cout << *it;
return 0;
}
约瑟夫问题-用stl list实现
于 2023-03-27 09:08:34 首次发布
该程序使用C++编写,主要操作是一个链表,通过迭代方式移除链表中的节点,直到链表只剩下一个元素。其核心逻辑在于对链表的迭代和删除操作。
摘要由CSDN通过智能技术生成