問題描述:
設某一機器由n個部件組成,每一種部件都可以從m個不同的**商處購得。設 w
ij是從**商j 處購得的部件i的重量,c
ij是相應的**。
試設計乙個回溯演算法,
對於給定的機器部件重量和機器部件**,計算總**不超過c的最小重量機器設計。
演算法思想:
n層m叉子集樹問題。
部件有n個,**商有m個,分別用w[i][j]和c[i][j]儲存從**商j 處購得的部件i的重量和相應**,cost為總**的上限。利用tempc+c[t][i]<=cost進行剪枝,若是到最後一層時,tempw小於之前得到的minw,則對minw和各部件**商best[n]進行更新。
參考**如下:
#include#define n 100
int w[n][n];
int c[n][n];
int best[n],x[n];
int n,m;
int cost;
int tempw=0,tempc=0,minw=10000;
void traceback(int t)
} for(int i=1;i<=m;i++){
if(tempw+w[t][i]
最小重量機器設計問題 回溯
題目內容 設某一機器由n個部件組成,部件編號為1n,每一種部件都可以從m個不同的 商處購得,商編號為1m。設wij是從 商j處購得的部件i的重量,cij是相應的 對於給定的機器部件重量和機器部件 計算總 不超過d的最小重量機器設計。輸入格式 第1行輸入3個正整數n,m和d。接下來n行輸入wij 每行...
最小重量機器設計問題 回溯法)
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後面沒...