最小重量机器问题
Posted zili
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小重量机器问题相关的知识,希望对你有一定的参考价值。
/*最小重量机器问题*/ #include<stdio.h> 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) { int j; if(t>n) //搜索到叶子结点,一个搜索结束,所有零件已经找完 { bestw=cw; //当前最小重量 for(j=1;j<=n;j++) bestx[j]=x[j]; } else { for(j=1;j<=m;j++) { if(cc+c[t][j]<=cost && cw+w[t][j]<bestw) { x[t]=j; cc+=c[t][j]; cw+=w[t][j]; Backtrack(t+1); cc-=c[t][j]; cw-=w[t][j]; } } } } int main() { int i,j; printf("请输入部件数: "); scanf("%d",&n); printf("请输入供应商数: "); scanf("%d",&m); printf("请输入限定价格: "); scanf("%d",&cost); printf("请输入各部件在不同供应商的重量: "); for(i=1; i<=n; i++) for(j=1; j<=m; j++) scanf("%d",&w[i][j]); printf("请输入各部件在不同供应商的价格: "); for(i=1; i<=n; i++) for(j=1; j<=m; j++) scanf("%d",&c[i][j]); Backtrack(1); printf("每个部件的供应商: "); for(i=1;i<=n;i++) printf("%d ",bestx[i]); printf(" "); printf("所有部件的最小重量: "); printf("%d ",bestw); printf(" "); return 0; }
以上是关于最小重量机器问题的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段
按要求编写Java应用程序。 创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量(代码片段