最小重量機器設計問題 回溯

2021-09-29 20:25:02 字數 1286 閱讀 9375

題目內容:

設某一機器由n個部件組成,部件編號為1n,每一種部件都可以從m個不同的**商處購得,**商編號為1m。設wij是從**商j處購得的部件i的重量,cij是相應的**。對於給定的機器部件重量和機器部件**,計算總**不超過d的最小重量機器設計。

輸入格式:

第1行輸入3個正整數n,m和d。接下來n行輸入wij(每行m個整數),最後n行輸入cij(每行m個整數),這裡1≤n、m≤100。

輸出格式:

輸出的第1行包括n個整數,表示每個對應的**商編號,第2行為對應的最小重量。

輸入樣例:

3 3 4

1 2 3

3 2 1

2 2 2

1 2 3

3 2 1

2 2 2

輸出樣例:
1 3 1

c++ 實現
#include

#include

using

namespace std;

int n,m,d;

int bestw=

10000000

;//重量

int w_arr[

100]

[100];

//花費

int c_arr[

100]

[100];

//當前重量

int cw=0;

//當前**

int cc=0;

//當前選了哪家的

int flag[

100]

;//最後的最優方案

int flag2[

100]

;void

find_best

(int i)

bestw=cw;

}return;}

for(

int j=

1; j<=m; j++

)//恢復初值

cw-=w_arr[i]

[j];

cc-=c_arr[i]

[j];

flag[i]=0

;}}int

main()

}for

(int i=

1; i<=n; i++

)//部件號

}find_best(1

);//輸出

cout

int i=

1;i<=n;i++

)return0;

}

最小重量機器設計問題(回溯)

問題描述 設某一機器由n個部件組成,每一種部件都可以從m個不同的 商處購得。設 w ij是從 商j 處購得的部件i的重量,c ij是相應的 試設計乙個回溯演算法,對於給定的機器部件重量和機器部件 計算總 不超過c的最小重量機器設計。演算法思想 n層m叉子集樹問題。部件有n個,商有m個,分別用w i ...

最小重量機器設計問題 回溯法)

include include using namespace std define maxn 1000 int n 部件個數 int m 供貨商個數 int max c 最大 int w maxn maxn int c maxn maxn 費用 int cc 當前 int cw 當前重量 int ...

回溯法求解最小機器重量設計問題

題目 設某一機器由n個部件組成,部件編號為1n,每一種部件都可以從m個不同的 商處購得,商編號為1m。設wij是從 商j處購得的部件i的重量,cij是相應的 對於給定的機器部件重量和機器部件 計算總 不超過d的最小重量機器設計。注意 輸出結果中第一行最後沒有空格。比如下面的輸出樣例中1 3 1後面沒...