使用鍊錶解決約瑟夫環問題

2021-08-29 01:23:10 字數 1043 閱讀 4034

1139 約瑟夫環問題

時間限制:500ms 記憶體限制:65536k

提交次數:157 通過次數:79

題型: 程式設計題 語言: g++;gcc

description

約瑟夫(josephus)環是這樣的:假設有n個小孩圍坐成乙個圓圈,並從1開始依次給每個小孩編上號碼。老師指定從第s位小孩起從1開始報數,

當數到m時,對應的小孩出列,依次重複,問最後留下的小孩是第幾個小孩?例如:總共有6個小孩,圍成一圈,從第乙個小孩開始,

每次數2個小孩,則遊戲情況如下:

小孩序號:1,2,3,4,5,6

離開小孩序號依次為:2,4,6,3,1

最後獲勝小孩序號:5

輸入格式

每組輸入是三個整數n,s,m。(1 <= n <= 30, 1 <= s <= n,1 <= m <= 10) ;

輸出格式

對於每組輸入,請輸出最後留下小孩的序號。

輸入樣例

6 1 2

輸出樣例

5

#include

#include

#define ren sizeof(struct people)

int yz, xx, ny;

struct people

;struct people *

create

(int n)

p1->next = head;

return

(head);}

intmain()

m =1;

while

(k < n -1)

p = p-

>next;

}while

(p->r !=1)

p->r =0;

k++; m =1;

} p = head;

while

(p->r !=1)

printf

("%d"

, p-

>num)

;return0;

}

使用迴圈鍊錶解決約瑟夫環問題

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有...

迴圈鍊錶解決約瑟夫環問題

題目要求的約瑟夫環操作 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人...

迴圈鍊錶解決約瑟夫環問題

問題描述 假設有n個小孩按照序號1,2,n圍坐成一圈,從第乙個小孩開始報數,每次報到n的人退出,接著從下乙個人重新開始從1開始報數,下一次再報到n的人退出,求最後乙個留下的人 小孩的個數n,和報數的n由鍵盤輸入 輸出留下人的序號 乙個迴圈鍊錶都寫得除出了很多問題,改了半天才出來 include in...