设某一机器由n个部件组成,每一种部件都可以从 m个不同的供应商处购得。设w,是从供应商j处购得的部件i的重量,cg是相应的价格。
试设计一个算法,给出总价格不超过c的最小重量机器设计。
★编程任务:
对于给定的机器部件重量和机器部件价格,编程计算总价格不超过d的最小重量机器设计。
★数据输入:
由文件input.txt给出输入数据。第一行有3个正整数n,m和d。接下来的2n行,每行n个数。前n行是c,后n行是w。
★结果输出:
将计算的最小重量,以及每个部件的供应商
#include<stdio.h>
#include<stdlib.h>
int n,m,d;//设置静态变量,在主函数给他赋值之后,其他函数访问无需传参
int array1[1000][1000],array2[1000][1000];
int cp=0,cw=0;
int bestw=10000;
int x[100],x1[100];
void machine(int t){
if(t>=n){
if(cw<bestw)
bestw=cw;
for(int i=0;i<n;i++)
x1[i]=x[i];
return ;
}
for(int i=0;i<m;i++)
{
cp+=array1[t][i];
cw+=array2[t][i];
x[t]=i;
if(cp<=d&&cw<=bestw)
machine(t+1);
cp-=array1[t][i];
cw-=array2[t][i];
}
}
int main(){
scanf("%d %d %d",&n,&m,&d);
for(int i=0;i<n;i++)
{for(int j=0;j<m;j++)
scanf("%d",&array1[i][j]);
}
for(int i=0;i<n;i++)
{for(int j=0;j<m;j++)
scanf("%d",&array2[i][j]);
}
machine(0);
printf("%d ",bestw);
for(int i=0;i<n;i++){
printf("%d ",x1[i]+1);
}
return 0;
}
请问为什么计算结果错误