資料結構與演算法 回溯法解決裝載問題

2021-09-01 20:51:15 字數 1025 閱讀 6370

遍歷各元素,若cw+w[t]<=c(即船可以裝下),則進入左子樹,w[t]標記為1,再進行遞迴,若cw+r>bestw(即當前節點的右子樹包含最優解的可能),則進入右子樹,否則,則不遍歷右子樹。

public

class

loading

//計算最優載重量

backtrack(1

);return bestw;

}//核心演算法

public

static

void

backtrack

(int t)

bestw = cw;

}return;}

r -= w[t];if

(cw + w[t]

<= c)

if(cw + r>bestw)

r += w[t]

;//恢復現場}/*

* 如果當前節點的右子樹不可能包含比當前最優解更好的解時,就不移動到右子樹上!

設bestw為當前最優解,z為解空間樹的第i 層的乙個節點

為剩餘貨箱的重量;當cw+r<=bestw時,沒有必要去搜尋z 的右子樹:

當前載重量cw+剩餘貨櫃的重量r>當前最優載重量bestw

*/public

static

void

main

(string[

] args)

; int c1 =

100;

int c2 =

100;

int n = ww.length -1;

maxloading

(ww,c1)

; int weight2 =0;

//儲存第二艘船可能要裝的重量

for(int i=

1;i<=n;i++)if

(weight2>c2)

else

}//第二艘船的裝載情況

for(int i =

1;i<=n;i++)}

}}}

PTA 資料結構與演算法 回溯

1.在4皇后問題中,x1,x2,x3,x4 對應4個皇后位置的列下標。在回溯剪枝過程中,狀態 1,4,2,會在 2,4,1,之前被檢查,並且它們對應的分支都沒有解。tf 2.西洋棋四皇后問題僅有 2 個不同的解。tf 1.給定收費公路重建問題的距離集d 首先可以確定的是 x1 0 和 x6 8。下列...

資料結構 回溯法與樹的遍歷

回溯法求冪集 深度優先遍歷解空間 include include using namespace std void getpowerset const vector srcvec,vector dstvec,int i else int main 回溯法求解n皇后問題 include include...

資料結構與演算法練習 回溯 遞迴

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。i個字母的排列組合和i 1個字母的排列組合問題...