分治演算法——分治演算法的基本思想(分-治-合)
用遞迴設計分治演算法的基本步驟(基準與遞迴方程)
老闆有一袋金塊(共n塊,n是2的冪(n≥2)),最優秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。並對自己的程式進行複雜性分析。
#include//比較重量大小的函式
float min(float x,float y)
float find_min(float a,int left,int right) //這裡是尋找最輕的金塊的函式
if(right-left==1.0) //對於n=2的情況
if(right-left>1.0) //對於n>2的情況
}
float find_max(float a,int left,int right) //尋找最重金塊的函式
if(right-left==1.0)
if(right-left>1.0)
}
int main()
{
float a[100];
int n;
float min;
float max;
printf("請輸入金塊數目:\n");
scanf("%d",&n);
printf("請輸入%d塊金子的重量:\n",n);
分治演算法 1 金塊問題 遞迴和分治策略
例14 2 金塊問題 有乙個老闆有一袋金塊。每個月將有兩名雇員會因其優異的表現分別被獎勵乙個金塊。按規矩,排名第一的雇員將得到袋中最重的金塊,排名第二的雇員將得到袋中最輕的金塊。根據這種方式,除非有新的金塊加入袋中,否則第一名雇員所得到的金塊總是比第二名雇員所得到的金塊重。如果有新的金塊週期性的加入...
分治法 蠻力法 金塊問題
乙個老闆有 n 塊金塊,他要把最重的一塊獎勵給最優秀的員工,最輕的一塊獎勵給次優秀的員工。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。題意就是在一堆亂序元素中找到兩個最值元素 最大值 最小值 本題解法思路有兩種 分治法 蠻力法 分治演算法實現上,又可以分兩種思路 遞迴 非遞迴...
演算法設計與分析 分而治之演算法 金塊問題
目錄 題目描述 問題分析 編寫 列印結果 老闆有一袋金塊 共n塊,n是2的冪 n 2 最優秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。對於一般思路 通過乙個函式max進行n 1次比較來找到最重的金塊,然後再從餘下的n ...