143 約瑟夫問題

2021-07-14 05:09:23 字數 893 閱讀 2741

143、有乙個陣列a[1000]存放0--1000;要求每隔二個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。

以7個數為例:

0-->1-->2(刪除)-->3-->4-->5(刪除)-->6-->7-->0(刪除),如此迴圈直到最後乙個數被刪除。

方法1陣列:

#define null 1000

int main()

while(arr[j]==null)

j=(++j)%1000;

//cout<

#includeusing namespace std;

#define null 0

struct node

;int main()

head->next = p;

while(p != p->next)

coutreturn 0;

}

方法3通用方法,感覺用上面兩種方法就行,通用方法太複雜

#include #define maxline 1000 //元素個數

/* maxline 元素個數

a 元素陣列

r 指標場

suffix 下標

index 返回最後的下標序號

values 返回最後的下標對應的值

start 從第幾個開始

k 間隔

*/int find_n(int a,int r,int k,int& index,int& values,int s=0)

else

while(r[front_node]!=front_node)

for(int i=0;i

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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