例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...