#include
#include
using
namespace std;
typedef
struct qnode
qnode;
//別名,可一樣也可不一樣,一般一樣
int n;
int c;
int bestw;
int w[
100]
;int bestx[
100]
;void
input()
;void
output()
;void
enqueue
(queue>
&q,int wt,
int i, qnode *e, qnode *
&beste,
int ch)
;int
maxloading()
;int
main()
void
input()
intmaxloading()
if(ew + r >= bestw)
//else wt>c,此時不考慮左兒子,考慮右兒子,當ew+r>=bestw時,可能存在更好的bestw,故enqueue(ew,0)
e = q.
front()
;//取下一擴充套件結點
q.pop();
if(!e)///到達同層的最末,此時需要更新剩餘裝箱載重量
ew = e-
>weight;
//更新最新節點對應的載重量
}for
(int j = n -
1; j >0;
--j)
}void
enqueue
(queue>
&q,int wt,
int i, qnode *e, qnode *
&beste,
int ch)
//qnode *是個整體,表示變數型別是qnode類指標, &beste中的&表明引用實參,即代表實參的乙個別名。
//&在變數定義區,表示引用,要注意它的用法。&在變數操作區,表示取位址符。這裡表示引用
} qnode *b =
new qnode;
//建立乙個新的qnode的型別的指標b
b->weight = wt;
b->lchild = ch;
b->parent = e;
q.push
(b);
//push(b 將b壓入佇列的末端
}void
output()
C語言 裝載問題
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 有兩艘船,載重量分別是c1 c2,n個貨櫃,重量是wi i 1 n 且所有貨櫃的總重量不超過c1 c2。確定是否有可能將所有貨櫃全部裝入兩艘船。輸入 多個測例,每個測例的輸入佔兩行。第一行一次是c1 c2和n n 10 第二行...
C語言回溯法裝載問題
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 有兩艘船,載重量分別是c1 c2,n個貨櫃,重量是wi i 1 n 且所有貨櫃的總重量不超過c1 c2。確定是否有可能將所有貨櫃全部裝入兩艘船。輸入 多個測例,每個測例的輸入佔兩行。第一行一次是c1 c2和n n 10 第二行...
最優裝載問題
現有n個貨櫃要裝進兩艘載重分別為c1,c2的船,其中第i個貨櫃重w i 並且題目保證 i 1nw i c1 c2 問是否存在乙個合理的裝載方案,使得這n個貨櫃都裝進兩艘船,若有請找出一種方案。題目分析 方法1 對於每個貨櫃,都有3種狀態 裝到船1,裝到船2,或者不裝。按照這個思想我們可以列舉所有的n...