題目內容:
設某一機器由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 1c++ 實現
#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後面沒...