演算法設計--木棒加工問題
現有n根木棒,已知它們的長度和重量。要用一部木工機一根一根地加工這些木棒。該機器在加工過程中需要一定的準備時間,是用於清洗機器,調整工具和模版的。
木工機需要的準備時間如下:(1)第一根木棒需要1min的準備時間;(2)在加工了一根長為l ,重為w的木棒之後,接著加工一根長為l ' (l ≤ l' ),重為 w' ( w≤w')的木棒是不需要任何準備時間的,否則需要一分鐘的準備時間。
給定n根木棒,找到最少的準備時間。
例如現在有長和重分別為(4,9),(5,2),(2,1),(3,5)和(1,4)的五根木棒,那麼所需準備時間最少為2min,順序為(1,4),(3,5),(4,9),(2,1),(5,2)。
本題僅僅採用貪心演算法是不夠的,排序之後還要使用動態規劃的演算法。
(1)資料結構:採用結構體表示木棒的資訊。
(2)按木棒的長度使用貪心演算法:對資料進行排序。
(3)使用動態規劃的方法,計算重量w的最長單調遞增子串行的個數。
#includeusing namespace std;
#define maxn 5001
struct stick
data[maxn];//所存放的木棒
int cmp(stick a,stick b)
int main()
sort(data,data+n,cmp);
int bb=lis(n,data);
cout<}
木棒加工問題(貪心 動態規劃)
現有n根木棒,已知它們的長度和重量,要用一部木工機一根一根地加工這些木棒。該機器在加工過程中需要一定的準備時間,是用於清洗機器,調整工具和模板的。木工機需要的準備時間如下 第一根木棒需要 分鐘的準備時間。在加工完一根長為length,重為weight的木棒之後,接著加工一根長為length leng...
貪心演算法 木棒問題
1 問題描述 現有n根木棒,已知他們的長度和重量。要用一部木工機一根一根的加工這些木棒。該機器在加工過程中需要一定的準備時間,是用於清洗機器,調整工具和模板的。輸入 輸入有多組測試例。輸入資料的第一行是測試例的個數t。每個測試例兩行 第一行是乙個整數n 1 n 5000 表示有多少根木棒 第二行包括...
1001木棒問題
簡單題義 往機器裡放木棒,第乙個用一分鐘,第二個若比第乙個長且重,則不耗時,否則耗時,現投入t根木棒求全部放入的最短時間,仍然是貪心演算法。思路 長度和重量兩個資料,用結構體,將資料排序,另外還用到了動態規劃,哎呦,感覺都不懂啊 感想 看課件的時候,明明方法和函式都寫出來了,還不知道怎麼寫主函式,也...