1. 你對貪心演算法的理解
貪心演算法是指在對問題求解時,總是做出在當前看來是最好的選擇。由於不是從整體來考慮最優解,所以有些問題就無法通過貪心演算法獲得最優解,但是還是有相當一部分問題通過貪心演算法能求得最優解的近似解。
2. 最優合併問題
給定k 個排好序的序列, 用 2 路合併演算法將這k 個序列合併成乙個序列。 假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m+n-1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。 為了進行比較,還需要確定合併這個序列的最差合併順序,使所需的總比較次數最多。
輸入格式:
第一行有 1 個正整數k,表示有 k個待合併序列。 第二行有 k個正整數,表示 k個待合併序列的長度。
輸出格式:
輸出最多比較次數和最少比較次數。
輸入樣例:
4
5 12 11 2
輸出樣例:
78 52
1 #include2 #include3 #include45using
namespace
std;67
int maxcmp(int k, int
a)8
18return
sum;19}
2021
int mincmp(int k, int
a)22
3738
return
sum;39}
4041
intmain()
42;//
記錄是否被比較過了
4647 cin >>k;
48for(int i=0; i)
4952
53 cout << maxcmp(k, a) << "
"<5455
return0;
56 }
演算法:最優合併順序的貪心策略就是每次都選取兩個最小的序列進行合併,而最差的是每次都選取兩個最大的序列進行合併。
3. 請說明在本章學習過程中遇到的問題及結對程式設計的情況
遇到的問題:在做題的時候,沒有看清題目的意思,因此兩個人都一直卡在那裡,後來重新看了一遍題目,才發現我們原來的理解是錯誤的。
演算法第四章作業
1.我對貪心演算法的理解 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態...
演算法第四章作業
一 對貪心演算法的理解 貪心演算法的基本要素是 貪心選擇性質和最優子結構性質 貪心選擇每次選取當前最優解,可以依賴以往的選擇,但絕不依賴於將來所做的選擇,也不依賴於子問題的解。貪心演算法通常以自頂向下的方式進行。二 汽車加油問題的貪心選擇性質 汽車應選擇在能到達的前提下離自己最遠的加油站進行加油 i...
演算法第四章作業
我的理解 主要是在貪心二字上面,但是重要的是在哪些方面上貪心,是解決題目的最重要的思路。因此要考慮貪心選擇性質和子結構性質 貪心選擇性質 從區域性的最優解擴充套件到整體的最優解 最優子結構性質 整體的最優解包含子問題的最優解 由於要計算汽車從起點到終點的最少加油次數 故,每次可以盡可能多的在滿油量內...