题目:
设某一机器由n个部件组成,每一种价格都可以从m个不同的供应商处购得。设wij是从供应商j处购得的部件i的重量,cij是相应的价格。 试设计一个算法,给出总价格不超过d的最小重量机器设计。
代码:
#include <stdio.h>
#define m 3
#define n 3
#define d 4
int price,weight,min=9999;
int w[m][n]={1,2,3,3,2,1,2,2,2};
int c[m][n]={1,2,3,3,2,1,2,2,2};
int p[10]={0};
int b[10]={0};
void traceback(int t){
if(t==n){
if(d>=price && min>weight){
min=weight;
for(int i=0;i<n;i++)
b[i]=p[i];
}
return;
}
for(int i=0;i<m;i++){
price+=c[t][i];
weight+=w[t][i];
p[t]=i;
if(d>=price && min>weight)
traceback(t+1);
price-=c[t][i];
weight-=w[t][i];
p[t]=0;
}
}
int main()
{
traceback(0);
printf("%d\n",min);
for(int i=0;i<n;i++)
printf("%d ",b[i]+1);
putchar('\n');
return 0;
}