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...