最小重量机器设计问题
来源:互联网 发布:刺客信条2mac 编辑:程序博客网 时间:2024/06/08 08:01
问题描述:
设某一机器由n个部件组成,每一种价格都可以从m个不同的供应商处购得。设wij是从供应商j处购得的部件i的重量,cij是相应的价格。 试设计一个算法,给出总价格不超过d的最小重量机器设计。
题目类型:回溯算法
代码如下:
/*该题traceback(num)中num代表的是第几个部件 */ #include<stdio.h>int n,m,d; int value[100][100],weight[100][100];int best[100]={0};//最佳选择方案int min=1000000;//最小重量 int b[100]={0};//当前的选择方案 int cur_weight=0;//当前总重量 int cur_value=0;//当前总价值 void traceback(int num){ int i; if(num==n) { if(cur_weight<min) { min=cur_weight; //更新最小重量 for(i=0;i<n;i++) best[i]=b[i]+1;//更新最佳选择方案,数组从0开始,输出要加1 } return ; } for(i=0;i<m;i++) { //有m个供应商可供选择 b[num]=i; cur_weight+=weight[num][i]; cur_value+=value[num][i]; if(cur_weight<min && cur_value<=d) //等号必须加 traceback(num+1); cur_weight-=weight[num][i]; cur_value-=value[num][i]; b[num]=0; }}int main(){ int i,j; scanf("%d%d%d",&n,&m,&d); for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&value[i][j]); } } for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&weight[i][j]); } } traceback(0); printf("the min weight is %d\n",min); for(i=0;i<n;i++) { printf("%d ",best[i]); } printf("\n"); return 0;}
0 0
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小机器重量设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题 java实现
- SDIBTOJ1350-最小重量机器设计问题
- SDIBT 1350 最小重量机器设计问题
- 回顾下最小重量机器设计问题
- 算法 最小重量机器设计问题
- 最小重量机器设计问题 回溯法
- 常用排序算法
- 用BroadcastReceiver判断网络状况
- Linux系统值得一看的学习方法及路线图
- 页面树形结构
- Leetcode-473. Matchsticks to Square
- 最小重量机器设计问题
- angular指令的transclude选项以及ng-transclude指令
- 迷宫
- C语言概览
- salesforce中常用技能总结(纯粹干货,深度积累)
- 四大组件复习(三)
- 请教定时执行任务问题
- 所谓更牛,就是换个罪受!——《时间的朋友2016跨年演讲》深入笔记
- 一次MAT分析logstash内存溢出