演算法第四章作業

2022-07-09 12:09:12 字數 1364 閱讀 9136

一、對貪心演算法的理解

貪心演算法是通過一系列選擇來得到問題的解,並不從整體最優的角度考慮,所做的選擇只是在某種意義上的區域性最優選擇,因此貪心演算法並不能解決所有所有的問題。

用貪心演算法來解決的問題有兩個性質:

1、貪心選擇性質:所求問題的整體最優解可以通過一系列區域性最優的選擇。

2、最優子結構性質:乙個問題的最優解包含其子問題的最優解。

與動態規劃演算法的區別在於,動態規劃中每步所做選擇依賴於其子問題的解,以自底向上的方式計算,而貪心演算法僅作出當前狀態下的最優解,再去解決作出這個選擇後產生的相應的子問題,以自頂向下的方式計算。

二、選擇一道作業題目說明你的演算法滿足貪心選擇性質

題目:貨幣找零 (30分)

人民幣的面值有100、50、20、10、5、2、1元。請你輸出找零紙幣數最少的方案

兩個整數,分別表示付款金額和消費金額

輸入找零方案。包含若干行,每行包含兩個數字,紙幣面額和紙幣數量

10 3

在這裡給出相應的輸出。例如:

5 1

2 1**:

1 #include 2

using

namespace

std;

3int money[7]=;

4int ans[7]=;56

intmain()

718 i++;19}

2021

for(int j=0;j<7;j++) 25}

2627 }

貪心策略:按面值從大到小選擇

證明:其中一次的選擇記為v(i).

若此問題的最優解為s,假設選擇v(i)不是最優的,而選擇v(j)(j>i),得到最優解s,若用v(i)代替v(j),不會影響後面的選擇,仍得到解s,而在假設中,選擇v(i)並不是最優的,則產生矛盾,證明貪心策略正確。

三、請說明在本章學習過程中遇到的問題及結對程式設計的情況

1、本章學習過程中遇到的難題:

貪心演算法符合現實生活中解決問題的思路,所以理解起來比較容易。但是對於貪心演算法的證明還沒有掌握,邏輯性太強有點繞。

2、結對程式設計的情況:

本章結對程式設計第一道題目比較簡單,和同伴都輕鬆地解決。但是第二道題目的問題太大了,以為只要定義乙個結構體,用乙個變數記錄原先的相對位置,再將幾個數排序,然後刪掉最大的數,再按原來的位置輸出就好了,最後發現只過了測試點,害,原來是沒有理解透題目的意思。

覺得本次結對程式設計的情況並不理想,效率不高,沒有辦法共同找到問題所在。繼續加油!

演算法第四章作業

1.我對貪心演算法的理解 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態...

演算法第四章作業

一 對貪心演算法的理解 貪心演算法的基本要素是 貪心選擇性質和最優子結構性質 貪心選擇每次選取當前最優解,可以依賴以往的選擇,但絕不依賴於將來所做的選擇,也不依賴於子問題的解。貪心演算法通常以自頂向下的方式進行。二 汽車加油問題的貪心選擇性質 汽車應選擇在能到達的前提下離自己最遠的加油站進行加油 i...

演算法第四章作業

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