演算法分治之金塊問題

2021-10-02 01:23:10 字數 849 閱讀 1923

分治演算法——分治演算法的基本思想(分-治-合)

用遞迴設計分治演算法的基本步驟(基準與遞迴方程)

老闆有一袋金塊(共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 ...