裝載問題 c

2021-10-01 05:35:13 字數 1346 閱讀 3909

#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...