演算法第四章作業

2022-07-11 22:00:17 字數 1210 閱讀 1341

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 #include4

5using

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

演算法第四章作業

我的理解 主要是在貪心二字上面,但是重要的是在哪些方面上貪心,是解決題目的最重要的思路。因此要考慮貪心選擇性質和子結構性質 貪心選擇性質 從區域性的最優解擴充套件到整體的最優解 最優子結構性質 整體的最優解包含子問題的最優解 由於要計算汽車從起點到終點的最少加油次數 故,每次可以盡可能多的在滿油量內...