題目:
描述:
有兩艘船,載重量分別是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,如果我們用貪...