约瑟夫问题


 1 #include 
 2 
 3 struct node {
 4     int data;
 5     node *next;
 6 };
 7 
 8 int main() {
 9     int n, m;
10     node *head, *p, *r;
11     scanf("%d%d", &n, &m);
12     head = new node;
13     head->data = 1;
14     head->next = NULL;
15     r = head;
16     for (int i=2; i<=n; i++) {
17         p = new node;
18         p->data = i;
19         p->next = NULL;
20         r->next = p;
21         r = p;
22     }
23     r->next = head;
24     r = head;
25     for (int i=1; i<=n; i++) {
26         for (int j=1; j<=m-2; j++)
27             r = r->next;
28         r->next = r->next->next;
29         r = r->next;
30     }
31     printf("%d\n", r->data);
32     return 0;
33 }
C++