演算法第四章作業(貪心演算法)

2022-07-11 22:06:14 字數 1164 閱讀 4205

1.你對貪心演算法的理解

貪心演算法是指在問題求解時,總是做出在當前看來最好的選擇。也就是說,不從整體最優上加以考慮,他所能做出的僅是某種意義上的區域性最優解。就像找零是面值是50 10 5 1和面值是4 3 1,如果用貪心演算法,得出的前者結論可以是最優,但是後者就會出現非最有借情況。

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

7-3 排隊接水 (15分)

有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。

共兩行,第一行為n(1≤n≤1000);第二行分別表示第1個人到第n個人每人的接水時間t1,t2,…,tn,每個資料之間有1個空格。

輸出為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。

10

56 12 1 99 1000 234 33 55 99 812

291.90

#include#include

#include

using

namespace

std;

intmain()

sort(a,a+n);

for(int i=0;i1;i++)

cout

<<2)<<(double)sum/n;

}

這個例題裡,想要等待時間最短,需要最多時間的人不能排在最前面,排在前面的人需要的時間越少越好。所以,先將需要的時間從小到大排序,然後逐個算出等待時間

56 12 1 99 1000 234 33 55 99 812

排序後: 1 12 33 55 56 99 99 234 812 1000

等待時間t: 0 1 13 46 101 157 256 355 589 1401

最後將t的每個數加起來÷n就可以得出最佳答案

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

太過於依賴 sort函式,對排序的方法不太記得了。需要重新回顧以前學過的排序方法。

結對程式設計情況:獨立程式設計,有遇到問題都能溝通解決好。能夠互相查漏補缺。

演算法第四章作業

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

演算法第四章作業

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

演算法第四章作業

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