4-1 程式儲存問題
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
該題目要求裝到磁帶上的程式數目最多,那麼只要選擇長度小的程式先放到磁帶上即可,即最短優先。
因為每新增乙個程式之後,剩下的程式中還是優先選擇最短的去新增,即做出在當前看來是做好的結果,所以它滿足貪心選擇的性質,可以使用貪心演算法的思路去求解。
我的**如下:
#include
#include
using namespace std;
int main()
sort(array , array + n); //對各個程式的長度按照從大到小的順序進行排序
int sum = 0;//sum表示已經新增到磁帶上的總長度
int number = 0;//表示已經加入到磁帶上的程式數目
for(int j = 0; j < n; j++)
cout << number;
return 0;
}對以上**的時間複雜度分析:
**的基本語句是:sum += array[j],迴圈的次數為n次,所以該貪心演算法的時間複雜度是0(n)
對貪心演算法的理解
貪心演算法總是考慮當前情況下的最優選擇,具有最優子結構性質。一般情況下,根據題目的求解,貪心策略可以分為最大優先或者最小優先兩種。
運用貪心策略去求解問題時,最重要的是確定最優子結構性質。
演算法第四章作業
1.我對貪心演算法的理解 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態...
演算法第四章作業
一 對貪心演算法的理解 貪心演算法的基本要素是 貪心選擇性質和最優子結構性質 貪心選擇每次選取當前最優解,可以依賴以往的選擇,但絕不依賴於將來所做的選擇,也不依賴於子問題的解。貪心演算法通常以自頂向下的方式進行。二 汽車加油問題的貪心選擇性質 汽車應選擇在能到達的前提下離自己最遠的加油站進行加油 i...
演算法第四章作業
我的理解 主要是在貪心二字上面,但是重要的是在哪些方面上貪心,是解決題目的最重要的思路。因此要考慮貪心選擇性質和子結構性質 貪心選擇性質 從區域性的最優解擴充套件到整體的最優解 最優子結構性質 整體的最優解包含子問題的最優解 由於要計算汽車從起點到終點的最少加油次數 故,每次可以盡可能多的在滿油量內...