約瑟夫環的兩種實現

2021-09-09 04:12:43 字數 650 閱讀 1572

方法一:用乙個陣列存放每個元素,再用乙個bool陣列存放每個元素是否還在那個佇列中。每次出列乙個元素,將其對應的那個bool值置為false。迴圈輸出第m個元素直到只剩下乙個元素在佇列中。不過這個時間複雜度比較高。

#includeusing namespace std;

//時間複雜度高的方法

#define max_length 50

int data[max_length];

bool isinqueue[max_length];

void main()

int value;

node* next;

};node* initlist()//建立鍊錶,記錄每個元素

else

} return head;

}void outqueue(node* head,int num)//出佇列

約瑟夫環的兩種解法

n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的編號。input 輸入n和m值。m 1。output 輸出勝利者的編號。sample input 5 3sample ...

約瑟夫環問題的兩種解法(詳解)

題目 josephus有過的故事 39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓。於是決定了自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺。然後下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和他的朋友並...

約瑟夫問題兩種實現方式

陣列版本 include include main int p int malloc len sizeof int printf 請輸入步長 n scanf d pace if pace 0 if pace 0 printf 請輸入進行輪數 n scanf d time printf 請輸入您想從那...