1.問題描述:
設某一機器由n個部件組成,每一種部件都可以從m個不同的**商處購得。設 w
ij是從**商j 處購得的部件i的重量,c
ij是相應的**。
試設計乙個回溯演算法,
對於給定的機器部件重量和機器部件**,計算總**不超過c的最小重量機器設計。
2.演算法設計:
回溯法要求要給出約束條件,很明顯:總**不超過c,
設當前已選部件的重量和為cw,**之和為cc,
當前最優重量用bestw表示,初始化bestw=∞;
限界條件:cw
3.**:
#include#includeusing namespace std;
int w[100][100];//w[i][j]為第i個零件在第j個**商的重量
int c[100][100];//c[i][j]為第i個零件在第j個**商的**
int bestx[100];//bestx[i]表示一次搜尋到底後的最優解,用來存放第i個零件的**商,
int x[100];//x[i]臨時存放第i個零件的**商
int cw=0,cc=0,bestw=10000;
int cost//限定**
int n;//部件數
int m;//**商數
void backtrack(int t)
else
{for(j=1;j<=m;j++)
{if(cc+c[t][j]<=cost && cw+w[t][j]>n;
cout<<"請輸入**商數:"<>m;
cout<<"請輸入限定**:"<>cost;
cout<<"請輸入各部件的在不同**商的重量:"<>w[i][j];
cout<<"請輸入各部件的在不同**商的**:"<>c[i][j];
backtrack(1);
cout<<"每個部件的**商:"<
回溯法求解最小機器重量設計問題
題目 設某一機器由n個部件組成,部件編號為1n,每一種部件都可以從m個不同的 商處購得,商編號為1m。設wij是從 商j處購得的部件i的重量,cij是相應的 對於給定的機器部件重量和機器部件 計算總 不超過d的最小重量機器設計。注意 輸出結果中第一行最後沒有空格。比如下面的輸出樣例中1 3 1後面沒...
回溯法解決最小機器重量問題
1.問題描述 設某一機器由n個部件組成,每一種部件都可以從m個不同的 商處購得。設 w ij是從 商j 處購得的部件i的重量,c ij是相應的 試設計乙個回溯演算法,對於給定的機器部件重量和機器部件 計算總 不超過c的最小重量機器設計。2.解題思路 3.演算法設計 回溯法要求要給出約束條件,很明顯 ...
最小重量機器設計問題 回溯法)
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 ...