约瑟夫问题
#include<iostream>
using namespace std;
struct node
{
int v;
struct node* next;
};
node* head, * tail, * t;
int main(void)
{
int n, m;
scanf("%d%d", &n, &m);
head = new node;
head->v = 1;
tail = head;
for (int i = 2; i <= n; i++)
{
node* newnode = new node;
newnode->v = i;
newnode->next = NULL;
tail->next = newnode;
tail = newnode;
}
tail->next = head;
tail = head;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j < m - 1; j++)
{
tail = tail->next;
}
printf("%d ", tail->next->v);
tail->next = tail->next->next;
tail = tail->next;
}
return 0;
}