回溯法求裝載問題

2021-06-18 09:18:54 字數 810 閱讀 8632

沒有學過演算法 上個學期學了資料結構之後就想到這樣解決裝載問題 到現在才實現它。只能是兩艘船的情況 而且沒有具體裝了哪些貨物

題目:描述:

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

輸入:

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

輸出:

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

#include using namespace std;

int calculate(int *goods, int goodsnumber, int maxwight, int nowwight, int nowmax)

interim = calculate(goods, i, maxwight, nowwight + goods[i], nowmax);

if(interim > nowmax)}}

return nowmax;

}int main()

goods = new int[goodsnum];

for(int i = 0; i < goodsnum; i++)

interim = calculate(goods, goodsnum, maxwight_1, 0, 0);

if(maxwight_1 + maxwight_2 - interim <= maxwight_2)

else

{cout << "no"《執行結果:

裝載問題 回溯法

描述 有一批共n個貨櫃要裝上艘載重量為c的輪船,其中貨櫃i的重量為wi。找出一種最優裝載方案,將輪船盡可能裝滿,即在裝載體積不受限制的情況下,將盡可能重的貨櫃裝上輪船。輸入 由檔案load.in給出輸入資料。第一行有2個正整數n和c。n是貨櫃數,c是輪船的載重量。接下來的1行中有n個正整數,表示貨櫃...

裝載問題 回溯法

有n個貨櫃要裝上2艘載重量分別為c1和c2的輪船,其中貨櫃i的重量為wi,且 問題 是否有乙個合理的裝載方案,可將這n個貨櫃裝上這2艘輪船?如果有,找出一種裝載方案。例如 當n 3,c1 c2 50 1 若w 10,40,40 可將貨櫃1和貨櫃2裝上第一艘輪船,而將貨櫃3裝上第二艘輪船 2 如果w ...

回溯法 裝載問題

有n個貨櫃要裝上載重量為w的輪船,其中貨櫃i的重量為wi。不考慮貨櫃體積的限制,現在要將若干貨櫃裝上輪船,使他們的總重量為w,如果總重量相同要盡可能的使用少的貨櫃。有n個貨櫃要裝上載重量為c1 c2的輪船,其中貨櫃i的重量為wi。問兩艘輪船能否裝下所有貨櫃。深搜所有情況,重點是要剪枝。題目一剪枝條件...