最小重量机器问题
来源:互联网 发布:零食 优惠 知乎 编辑:程序博客网 时间:2024/05/16 02:15
设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。
设wij 是从供应商j 处购得的部件i的重量,cij是相应的价格。
对于给定的机器部件重量和机器部件价格,编程计算总价格不超过d的最小重量机器设计。
输入
第一行有3 个正整数n ,m和d。接下来的2n 行,每行n个数。前n行是c,后n行是w。
输出
将计算出的最小重量,以及每个部件的供应商
样例输入
3 3 4
1 2 3
3 2 1
2 2 2
1 2 3
3 2 1
2 2 2
样例输出
4
设wij 是从供应商j 处购得的部件i的重量,cij是相应的价格。
对于给定的机器部件重量和机器部件价格,编程计算总价格不超过d的最小重量机器设计。
输入
第一行有3 个正整数n ,m和d。接下来的2n 行,每行n个数。前n行是c,后n行是w。
输出
将计算出的最小重量,以及每个部件的供应商
样例输入
3 3 4
1 2 3
3 2 1
2 2 2
1 2 3
3 2 1
2 2 2
样例输出
4
1 3 1
#include<stdio.h>int i,j;int n = 0; // 部件数int m = 0; // 厂商数int d = 0; // 最大价格int **c; // 部件 i 厂商 j 的价格int **w; // 部件 i 厂商 j 的重量int cT = 0; // 当前总价格int wT = 0; // 当前总重量int bestw; // 当前最小重量int *bestx;int *savex;void backtrack(int t){if(t==n-1){if(cT<bestw || bestw==0){bestw=cT;for(j=0;j<n;j++)savex[j]=bestx[j];}return;}else{for(j=0;j<m;j++) {if(cT+c[t][j]<=d){cT+=c[t][j];wT+=w[t][j];bestx[t]=j+1;backtrack(t+1);bestx[t]=0;cT-=c[t][j];wT-=w[t][j];}}}}int main() {//录入数据scanf("%d%d%d",&n,&m,&d);c=new int *[n];for(i=0;i<n;i++)c[i]=new int[m];w=new int *[n];for(i=0;i<n;i++)w[i]=new int[m];bestx = new int[m];savex = new int[m];for (i=0;i<n;i++) for (j=0;j<m;j++) scanf("%d",&c[i][j]);for (i=0;i<n;i++) for (j=0;j<m;j++) scanf("%d",&w[i][j]);backtrack(0);printf("%d\n",bestw);for(i=0;i<n;i++)printf("%d ",savex[i]);return 0;}
0 0
- 最小重量机器问题
- 最小重量机器问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小机器重量设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题 java实现
- SDIBTOJ1350-最小重量机器设计问题
- SDIBT 1350 最小重量机器设计问题
- 回顾下最小重量机器设计问题
- android 使程序后台运行
- 你刚才在淘宝上买了一件东西
- 算法之二分查找
- 最大子段和
- java编程中的一些技巧(持续更新中)
- 最小重量机器问题
- 人大的阿呆不的东南大吗妈的!!撒旦啊D
- Android系统性能调优工具介绍
- 【hadoop】 1002-hadoop2.4.1伪分布式搭建
- 缩放到TOC中的活动图层
- 分析erlang热更新实现机制
- 最优合并问题
- 【hadoop】 1003-hadoop安装
- Linq 复合from子句和SelectMany扩展方法