約瑟夫環高階

2021-10-01 11:20:23 字數 1074 閱讀 4558

資料結構上機題

每個人有自己的編號和乙個數字(用於決定下乙個淘汰者),先輸入第乙個的序號;

例如:共有10人圍成環,每個人標號從1到10,每人手裡拿著乙個數,假定編號5的人手中拿著數字3

假定輸入的第乙個淘汰序號為5,則編號為5的人淘汰,此時獲取編號為5的人手中的數字,即3,則從淘汰者(5)的下乙個位置開始數3個數,淘汰次位置的人,即淘汰編號為8的人,繼續獲取編號為8的人手中的數字,用於決定下乙個淘汰者,直至所有人都被淘汰

**如下

#include

using namespace std;

struct node ;

class linklist;

linklist::linklist()

void linklist::creatlist(int n)

}void linklist::display()

cout << 「\n」;

}void linklist::taotai(int j)

temp = head;

while(t != j-1)

}a++;

t = 0; // 計數器置零

b = temp->next->data; // 取出密碼

cout<<「第」s = temp->next; // 刪除出列人的節點

temp->next = s->next;

delete s;

if(!temp->next) // 若第乙個出列的人是最後乙個座位的,則指標回到第一人

while(temp) // 當人沒有全部出列時,一直執行

}a++;

t = 0; // 每齣列乙個人,計數元置零

b = temp->next->data; // 取出出列人的密碼

cout<<「第」k = temp->next;

temp->next = k->next;

delete k; // 刪除出列人的節點

if(!temp->next) // 若第乙個出列的人是最後乙個座位的,則指標回到第一人}}

int main()

約瑟夫環高階問題

約瑟夫環高階 2020個數 圍成乙個圈,從第乙個開始,每過三個,刪除三個,例 從1開始,刪除2,3,4。求出最後剩下的數是多少?如下 public static void main string args if i cycle 1 如果indexlist只有乙個值,則為最後解,直接返回。if ind...

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...