分治演算法 1 金塊問題 遞迴和分治策略

2021-10-01 07:43:18 字數 746 閱讀 1083

例14-2 [金塊問題] 有乙個老闆有一袋金塊。每個月將有兩名雇員會因其優異的表現分別被獎勵乙個金塊。按規矩,排名第一的雇員將得到袋中最重的金塊,排名第二的雇員將得到袋中最輕的金塊。根據這種方式,除非有新的金塊加入袋中,否則第一名雇員所得到的金塊總是比第二名雇員所得到的金塊重。如果有新的金塊週期性的加入袋中,則每個月都必須找出最輕和最重的金塊。假設有一台比較重量的儀器,我們希望用最少的比較次數找出最輕和最重的金塊。

#include#include#include#includeusing namespace std;

void fun(vector&arr, int left, int right,int &max,int &min)

else

}int main() ;

int a = *max_element(v.begin(), v.end());

int b = *min_element(v.begin(), v.end());

cout << "truth: " << a << " " << b << endl;

int max = v[0], min = v[0];

fun(v, 0, v.size() - 1, max, min);

cout << "max: " << max << endl << "min: " << min << endl;

system("pause");

return 1;

}

結果:

演算法分治之金塊問題

分治演算法 分治演算法的基本思想 分 治 合 用遞迴設計分治演算法的基本步驟 基準與遞迴方程 老闆有一袋金塊 共n塊,n是2的冪 n 2 最優秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。並對自己的程式進行複雜性分析。i...

分治法 蠻力法 金塊問題

乙個老闆有 n 塊金塊,他要把最重的一塊獎勵給最優秀的員工,最輕的一塊獎勵給次優秀的員工。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。題意就是在一堆亂序元素中找到兩個最值元素 最大值 最小值 本題解法思路有兩種 分治法 蠻力法 分治演算法實現上,又可以分兩種思路 遞迴 非遞迴...

演算法設計 遞迴和分治

任務1 計算斐波那契數列,首元素從序號0開始 任務描述 分別利用遞迴和迭代法輸出斐波那契數列的第n項的值,檢查輸出結果的正確性。將 複製貼上到方框中,將執行結果截圖。演算法輸入 7 演算法輸出 斐波那契數列中第n項 21 遞迴法 include int fun int n int main void...