C語言 N個人圍成一圈報數淘汰問題

2022-04-11 08:52:09 字數 1013 閱讀 7449

《一》問題描述:

有17個人圍成一圈(編號為0~16),從第 0號的人開始從 1報數,

凡報到 3的倍數的人離開圈子,然後再數下去,直到最後只剩下乙個人為止。

問此人原來的位置是多少號?

《二》問題解決:

1.定義陣列記錄每個編號的狀態(是否被淘汰);

2.在未被淘汰的人中檢查是否數到3,若是,淘汰此人;

3.繼續此過程至所有人被淘汰;

《三》示例**:

1

#define _crt_secure_no_warnings

2 #include 3 #include 4 #include 5 #include 67

#define n 1389

struct

mystruct10;

1415 typedef struct

mystruct people;

1617

intmain()

1826

27for (int i = 0; i < n; i++)

2831

32int count = 0;33

int i = 0;34

int index = 0;35

while (count < n-1)36

41 i++;

4243

if (i % 3 == 0)44

49 index = (index + 1) %n;

5051}52

53 printf("\n"

);54 i = 0;55

intflagnum;

56while (i

5762

else

6366 i++;67}

68 printf("\n"

);69

70 system("

pause");

71 }

view code

n人圍成一圈報數問題

題目 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。思路 假如是8人,則需要乙個陣列將8個人的從1到8依次記下每人位數,還需要乙個模擬報數口令的變數該變數最初為0,從1到2在到3,當該變數為3時,此時對應編號的人就要退出 那麼第一...

C語言經典例69 有n個人圍成一圈報數問題

有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。假設全部人都退圈,則最後乙個退圈的人就是題目中留下的那一位,詳細思路請見實現中的注釋。include intmain 當所有人都退出圈子時停止迴圈 最後退圈的人就是題中有乙個留在圈內的...

助教c c n個人圍成一圈報數問題

以下三個問題都屬於同型別的問題,其中兩道題目是助教時的實驗題,還有一道是華為在成都招聘時的機試題目。在這三個問題中,問題1考慮的最簡單,用指標實現 問題2考慮最全面,用結構體實現 問題3用到了函式。問題1 有n個人圍成一圈,順序排號。從第乙個人開始報數,凡報到3的人退出圈子,問最後留下的是幾號?源程...