1.對貪心演算法的理解
貪心演算法總是做出在當前看來是最好的選擇,即貪心演算法並不是從整體最優上加以考慮,所做的選擇只是在某種意義上的區域性最優選擇。
選擇的貪心策略必須具有無後效性,即當前選擇的結果必須不能對之前的結果狀態產生影響,而只與當前狀態有關。
一般用貪心演算法思想解題的步驟:
建立數學模型來描述問題
;把求解問題分成若干個子問題
;對每一子問題求解,得到子問題的區域性最優解
;把子問題的區域性最優解合成原來解問題的乙個解。
可以用貪心演算法求解的問題中一般有兩個重要性質:貪心選擇性質(所求問題的整體最優解可以通過一系列區域性最優的選擇來達到)和最優子結構性質。
2.請選擇一道作業題目說明你的演算法滿足貪心選擇性質
4-1 程式儲存問題 (90分)
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
輸入格式:
第一行是2 個正整數,分別表示檔案個數n和磁帶的長度l。接下來的1行中,有n個正整數,表示程式存放在磁帶上的長度。
輸出格式:
輸出最多可以儲存的程式數。
輸入樣例:
在這裡給出一組輸入。例如:
6 50
2 3 13 8 80 20
輸出樣例:
在這裡給出相應的輸出。例如:
**如下:
#include
#include
using namespace std;
int put(int *a,int n, int l)u,因為程式1是最優解,所以其長度小於程式a的長度,並且a中的程式個數和b中的相同,所以b也是乙個最優解,而且b中包含程式1,所以總存在以貪心選擇開始的最優儲存方案。
3.請說明在本章學習過程中遇到的問題及結對程式設計的情況
本章學習過程中遇到的問題:剛開始學習貪心演算法的時候,有道貨幣找零的題目,一開始我看到題目的時候有想法但打
不出來,就是對貪心演算法還不夠了解,沒有領悟其中的魅力,然後在看書和看ppt回想老師上課講的內容之後,慢慢就可以把**打出來了。
結對程式設計的情況:這一次的上機實驗中,在答第一題的時候,我一開始只通過了兩個測試點,還有乙個(乙個都沒放的測試點)沒通過;我的夥伴一開始也是只通過了兩個測試點,還有乙個(全部都放的測試點)沒通過,然後我們兩個人通過討論自己**的問題和對於**,來找出沒有通過測試點的地方,在討論完之後修改自己的**,然後就都通過了。由此可以感覺到結對程式設計可以使我在討論中學習更多一開始被自己忽略掉的內容,可以更好地掌握該知識點,也可以學習他人**,從而知道自己****可以改進,使**簡潔易懂。
演算法第四章作業
1.我對貪心演算法的理解 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態...
演算法第四章作業
一 對貪心演算法的理解 貪心演算法的基本要素是 貪心選擇性質和最優子結構性質 貪心選擇每次選取當前最優解,可以依賴以往的選擇,但絕不依賴於將來所做的選擇,也不依賴於子問題的解。貪心演算法通常以自頂向下的方式進行。二 汽車加油問題的貪心選擇性質 汽車應選擇在能到達的前提下離自己最遠的加油站進行加油 i...
演算法第四章作業
我的理解 主要是在貪心二字上面,但是重要的是在哪些方面上貪心,是解決題目的最重要的思路。因此要考慮貪心選擇性質和子結構性質 貪心選擇性質 從區域性的最優解擴充套件到整體的最優解 最優子結構性質 整體的最優解包含子問題的最優解 由於要計算汽車從起點到終點的最少加油次數 故,每次可以盡可能多的在滿油量內...