最小機器重量設計問題(回溯法 滿m叉樹)

2021-07-09 04:32:04 字數 950 閱讀 6897

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