演算法設計與分析 裝載問題(回溯)

2021-08-28 20:07:54 字數 816 閱讀 3734

題目:

描述:

有兩艘船,載重量分別是c1、 c2,n個貨櫃,重量是wi (i=1…n),且所有貨櫃的總重量不超過c1+c2。確定是否有可能將所有貨櫃全部裝入兩艘船。

輸入:

多個測例,每個測例的輸入佔兩行。第一行一次是c1、c2和n(n<=10);第二行n個整數表示wi (i=1…n)。n等於0標誌輸入結束。

輸出:

對於每個測例在單獨的一行內輸出yes或no。

輸入樣例:

7 8 2

8 77 9 2

8 80 0 0

輸出樣例:

yesno

tips:

求出c1 的bestw,如果r - bestw < c2 輸出yes

否則::::

#include #include #include #include using namespace std;

int n,c1,c2,w[15];

int cw,bestw,r,x[15],bestx[15];

void backtrack(int i)

else

if(cw + r > bestw) //搜尋右子樹

backtrack(i + 1);

r += w[i];

}}int main()

backtrack(1);

if(r - bestw <= c2) cout << "yes" << endl;

else cout << "no" << endl;

}return 0;

}

裝載問題 回溯演算法

題目描述 有一批共n個貨櫃要裝上2艘載重量分別為c1和c2的輪船,其中貨櫃i的重量為wi。裝載問題要求確定,是否有乙個合理的裝載方案可將這n個貨櫃裝上這2艘輪船。如果有,找出一種裝載方案。題目出自 計算機演算法設計與分析 第三版 王曉東 這是乙個典型的回溯演算法問題。如下 template clas...

回溯演算法 裝載問題

給定n個貨櫃要裝上一艘載重量為c的輪船,其中貨櫃i的重量為wi。貨櫃裝載問題要求確定在不超過輪船載重量的前提下,將盡可能多的貨櫃裝上輪船 貪心演算法中的裝載問題討論的是裝載件數 本題討論的是最大裝載重量。由於貨櫃問題是從n個貨櫃裡選擇一部分貨櫃,假設解向量為x x1,x2,xn 其中xi xi 1表...

演算法設計 裝載問題(兩輪船)(回溯)

要求確定乙個合理的裝載方案將n個貨櫃裝入兩艘船,如果有,找出一種方案 我們之前用貪心做過一艘船的最優裝載問題 將盡可能多的貨櫃裝入 即將重量小的貨櫃先裝。那麼我們看看這個題,如果用貪心的話能不能做出來。假設兩艘船載重量為100 100,假設有5個物體,重量為20 30 40 50 60,如果我們用貪...