C/C++02: Josephus问题
生活随笔
收集整理的這篇文章主要介紹了
C/C++02: Josephus问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
據說著名猶太歷史學家Josephus有過以下的故事: 在羅馬人占領喬塔帕特後,39個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧愿死也不要被人抓到,于是決定了一個自殺方式,41個人排成一個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然后再由下一個重新報數,直到所有人都自殺身亡為止。 然而Josephus和他的朋友并不想遵從,Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,于是逃過了這場死亡游戲。 用循環列表的數據結構是比較容易實現的,下面是我曾經用數組的方法(純粹是為了玩一玩)完成的C程序,應該在實現上還可以有改進。 1 #include <stdio.h>
2
3 int main()
4 {
5 int N = 41;
6 int i = 1;
7 int m = 3;
8 int MAX = N;
9 int k, t;
10 int a[100], b[100];
11 for (k = 0; k < N; k++)
12 {
13 b[k] = k + 1;
14 }
15 for(k = 0; k < MAX; k++)
16 {
17 t = (i + m - 1) % N;
18 if (t - 1 < 0)
19 {
20 a[k] = b[N-1];
21 i = N;
22 }
23 else
24 {
25 a[k] = b[t-1];
26 i = t;
27 while (t < N)
28 {
29 b[t-1] = b[t];
30 t++;
31 }
32 }
33 N = N - 1;
34 printf("%i ", a[k]);
35 }
36 printf("\n");
37 return 0;
38 }
?
轉載于:https://www.cnblogs.com/toorist/p/4845304.html
總結
以上是生活随笔為你收集整理的C/C++02: Josephus问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用soapUI测试webservice
- 下一篇: 关于Jenkins找不到依赖Jar包问题