乙個約瑟夫問題求解,高手請進

2025-01-08 04:30:28 字數 2839 閱讀 9013

1樓:網友

非連結串列的。#include "iostream"

using namespace std;

#define m 100

int count=0;

int order[m];

void joseph(int n,int k,int m)int flag[m]=;

int count=0;

for(int i=k;i<=n;i++)if(flag[i]==0)

count++;

if(count==m)

flag[i]=1;

count=0;

couti=0;void main()

int n,k,m;

cout<<"輸入總人數:"cout<<"第幾個人開始報數?"cout<<"報到數字幾的人退出?"cout<<"退出的人的順序為:"joseph(n,k,m);

2樓:網友

你可以用迴圈連結串列做。

【基礎】約瑟夫問題

3樓:網友

我原來寫的,不知道合不合你的情況,希望能給你幫助,另外程式設計還是要靠自己。

#include ""

#include ""

#include "vector"

using namespace std;

void main()

j++;/*本輪+1*/

if(i==s-1)/*重新遍歷每個人*/i=-1;

if(k==s)/*全部輸出完成時結束*/break;

system("pause");}

約瑟夫難題的約瑟夫指的是哪位約瑟夫?

4樓:淄熙

據說著名猶太歷史學家 josephus有過以下的故事:在羅馬人佔領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和他的朋友並不想遵從,josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過了這場死亡遊戲。

17世紀的法國數學家加斯帕在《數目的遊戲問題》中講了這樣乙個故事:15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法:30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。

問怎樣排法,才能使每次投入大海的都是非教徒。 *問題分析與演算法設計 約瑟夫問題並不難,但求解的方法很多;題目的變化形式也很多。這裡給出一種實現方法。

題目中30個人圍成一圈,因而啟發我們用乙個迴圈的鏈來表示。可以使用結構陣列來構成乙個迴圈鏈。結構中有兩個成員,其一為指向下乙個人的指標,以構成環形的鏈;其二為該人是否被扔下海的標記,為1表示還在船上。

從第乙個人開始對還未扔下海的人進行計數,每數到9時,將結構中的標記改為0,表示該人已被扔下海了。這樣迴圈計數直到有15個人被扔下海為止。

什麼是約瑟夫斯問題?

5樓:易書科技

這是乙個古老的傳說:有64名戰士被敵人俘虜了,敵人命令他們排成乙個圓圈,編上號碼1,2敵人把1號殺了,又把3號殺了,他們是隔乙個殺乙個這樣轉著圈殺,最後剩下乙個人,這個人就是約瑟夫斯,請問約瑟夫斯是多少號?這就是「約瑟夫斯問題」。

這個問題是比較容易解答的:敵人從1號開始,隔乙個殺乙個,第一圈把奇數號碼的戰士全殺死了。剩下的32名戰士需要重新編號,而敵人在第二圈殺死的是重新編排的奇數號碼。

由於第一圈剩下的全部是偶數號2,4把它們全部用2除,得1,2這是第二圈重新編的號碼,第二圈殺過之後,又把奇數號碼都殺掉了,還剩下16個人,如此下去,可以想到最後剩下的必然是64號。

=2它可以連續被2整除6次,是從1到64中能被2整除次數最多的數,因此,最後必然把64號剩下,從64=還可以看到,是轉這6圈之後,把約瑟夫斯剩下來的。

如果有65名戰士被俘,敵人還是按上述方法殘殺戰士,最後剩下的還是64號約瑟夫斯嗎?

不是了,因為第乙個人被殺後,也就是1號被殺後,第二個被殺的必然是3號,如果把1號排除在外,那麼剩下的仍是64個人,對於剩下這64個人,新1號就應該是原來的3號,這樣原來的2號就變成新的64號了,所以剩下的必然是原來的2號。

對於一般情況來說,如果原來有2k個人,最後剩下的必然是2k號;如果原來有2k+個人,最後剩下的是2號;如果原來有2k+個人,最後剩下的是4號……如果原來有2k+個人,最後剩下的是2m號。

比如,原來有100人,由於100所以最後剩下的是2×3號;又比如,原來有111人,由於111所以最後剩下的是2×4號。

下面把問題改一下:不讓被俘的戰士站成圓圈,而排成一條直線,然後編上號碼,從1號開始,隔乙個殺乙個,殺過一遍之後,然後再重新編號,從新1號開始,再隔乙個殺乙個,問最後還是約瑟夫斯嗎!

答案是肯定的,最後剩下的仍然是約瑟夫斯。

如果戰俘人數是65人呢?剩下的還是約瑟夫斯,只要人數不超過128人,也就是人數小於27,那麼最後剩下的總是約瑟夫斯,因為從1到128中間,能被2整除次數最多的就是64,而敵人每次都是殺奇數號留偶數號,所以64號總是最後被留下的人。

什麼是約瑟夫問題?

6樓:上海獨品新感覺

約瑟夫問題是個有名的問題:n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。例如n=6,m=5,被殺掉的人的序號為5,4,6,2,3。

最後剩下1號。

假定在圈子裡前k個為好人,後k個為壞人,你的任務是確定這樣的最少m,使得所有的壞人在第乙個好人之前被殺掉。

男生請進!問題,男生請進!一個問題

你說的有點片面,喜歡某個人不僅僅看她的相貌 身材,最重要的還要看她的 心理 美,我個人就是這樣認為的,當然像你所說的那種女孩,都是男孩子追求的物件,不知樓主你您是屬於哪種型別的呢?男人不可能都喜歡同一種女孩子 蘿蔔白菜各有所愛 不能從這抽象的問題就決定自己喜不喜歡.要看看才行 這個不一定咯,要看個人...

求解vb演算法問題,求解一個vb演算法問題

57132899 那先坐的為a位 再計算出除去a位之外的相鄰組合 隨機選出一個組合 vb一個演算法問題。樓主到現在還沒結貼證明還沒找到所求,正好有空,我就補上vb6的碼 問題考點 數字組合演算法,就用最簡單的遞迴吧。你先建三text,text1的屬性 scrollbars設為2 multiline設...

請教各位高手問題,請教各位高手一個問題

調為純白,是為了不讓顯示屏長時間顯示同一影象,這樣很容易 灼傷 螢幕,其道理和屏保是一樣的,電腦設定屏保幹什麼,可不是為了好看的。但誰要你調為純白啊?看不出有什麼特別的意義,那樣還不如設定屏保呢。離開的情況,要看你是怎麼想的。如果為了節電,還是關掉的好,開機瞬間的電流雖然很大,但由於時間極短,是耗不...