problem:
假定一段長度為i的鋼條的**為pi(i= 1, 2, …), **如下
長度i1
2 3
4 5
6 7
8
9
10
**pi 5
8 10
請問,給定一段長度為n的鋼條和乙個**表pi
如何切割,收益最大?
#include #include using namespace std;
int price_count = 10;
bool record[31] = ;
int max_price(int *price, int length)
price[length] = max; //這步雖然越界,存在風險
//但是可以避免建立乙個新的int陣列
record[length] = 1;
return max;}/*
* max_price = max
* 對特定長度進行遞迴,把已計算過的中間最大值進行儲存指表,
* 便於下次遞迴使用
*/int main(int argc, char const *argv)
; for (int i = 20; i >= 8; --i)
cout << max_price(price, i) << endl;
return 0;
}
實際上,這是一種製表法,從1開始制最優值的表,
只不過是用遞迴來實現罷了,
所以有個風險,就是問題規模太大的話,可能出現段錯誤。
於是,可以把上述**改寫成乙個迭代製表的程式。
裝木塊問題
description 有一種很特別裝箱子,箱子的所有長度都是l,還有n根木塊,所有木塊的長度都小於等於l,箱子可以裝木塊,但是有如下限制 1.每個箱子只能裝一根或兩根木塊。2.如果裝兩根必須使得這兩根木塊的長度之和小於等於箱子的長度l。你的任務是求出最少需要多少個這樣的箱子才能裝下所有的木塊。in...
1992 裝木塊問題
裝木塊問題 time limit 1 seconds memory limit 32768 k total submit 79 accepted 7 description 有一種很特別裝箱子,箱子的所有長度都是l,還有n根木塊,所有木塊的長度都小於等於l,箱子可以裝木塊,但是有如下限制 1.每個箱...
UVA 木塊問題 101
uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...