设某一机器由
n个部件组成,每一种部件都可以从
m个不同的供应商处购得。设
wij是从供应商
j处购得的部件
i的重量,
cij是相应的价格。试设计一个算法,给出总价格不超过
cost的最小重量机器设计。
Input
每组测试数据第一行有
3 个正整数
n,
m和
cost。接下来的
2n行,每行
m个数。前
n行是
cij,后
n行是
wij。
(1<=n,m<=20; 1<=cij <=100; 1<=wij<=100, 1<=cost<=40000)
Output
分
2行输出最小重量,以及每个部件的供应商。若找不到解决方案,则输出
-1。
Sample Input
3 3 4
1 2 3
3 2 1
2 2 2
1 2 3
3 2 1
2 2 2
#includeusing namespace std;
const int len=30;
const int maxWeight=4000;
int n,m,cost;
int w[len][len];//重量
int c[len][len];//价钱
int visit[len];
int path[len];
int minWeight = maxWeight;
void findMinWeight ( int current,int weight,int i ) //当前策略的价钱和最小重量
{
if ( i >= n )
{
minWeight=weight;
for ( int j=0; j>n>>m>>cost )
{
minWeight = maxWeight;
int i,j;
for ( i=0; i<2*n; i++ )
{
for ( j=0; j