算法不是一般的烂呀,这个Josephus问题还纠结了半天。还好最后纠结出来了,其实很简单呀,弄个循环链表,遇到需要出列的就把这个节点从链表中删除,直到最后循环链表中只有一个节点。
1 | void Josephus( ) |
2 | { |
3 | PtrNode s; |
4 | s= pFirst; |
5 | |
6 | while( s->next != s) |
7 | { |
8 | for( int i = 0; i < M-1; i++) |
9 | s = s->next; |
10 | |
11 | DeleteNode(s); |
12 | s = s->next; |
13 | } |
14 | |
15 | DeleteNode(s); |
16 | } |