問題描述:
設有n個人圍坐在圓桌周圍,現從某個位置m(1≤m≤n)上的人開始報數,報數到k的人就站出來。下乙個人,即原來的第k+1個位置上的人,又從1開始報數,再報數到k的人站出來。依次重複下去,直到全部的人都站出來為止。試設計乙個程式求出這n個人的出列順序。
#include
using
namespace std;
typedef
struct lnode
lnode,
*linklist;
//迴圈鍊錶結點型別定義
//建立迴圈鍊錶
linklist initlist
(linklist l,
int n)
while
(q->next ==
null
)return l;
}//刪除報數為k的結點
linklist deletelist
(linklist l,
int m,
int k,
int n,
int w)}}
else
} q = p-
>next;
p->next = q-
>next;
q->next =
null
;free
(q);
l = p;
return l;
}//獲取報數為k的序號
intgetnumlist
(linklist l,
int m,
int k,
int n,
int w)
else
for(
int i =
0; i < k - m +
1; i++)}
else
}return p-
>data;
}int
main()
cout <<
"這"<< w <<
"人的出列順序為:"
;for
(int i =
0; i < w; i++
) cout << endl;
return0;
}
約瑟夫環問題拓展 C C
這樣的情況該如何解決呢?依照模擬的思路和 我們可以簡單的對其進行拓展。我們需要考慮的是下面三種情況 第一種情況下,我們需要考慮如何在不改動原迭代器位置的情況下把符合要求的三個人的狀態設為不參與報數的狀態。於是定義了乙個新的等於原迭代器的迭代器temp,用它來將三人的狀態改變。由於三人的位置相連且不經...
php解決約瑟夫問題
約瑟夫環 是乙個數學的應用問題 一群猴子排成一圈,按1,2,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去 如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m n,輸出最後那個大王的編號。下面列出了...
python解決約瑟夫問題
據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...