• 45-机器设计问题(深搜)


    机器设计问题 (20分)
    题目内容:
    设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设 wij 是从供应商j 处购得的部件i的重
    量,cij 是相应的价格。
    试设计一个回溯算法,给出总价格不超过d的最小重量机器设计。
    对于给定的机器部件重量和机器部件价格,计算总价格不超过d的最小重量机器设计。

    提示:该问题的解答同0-1背包问题类似。
    输入描述:
    第一行:3个整数n(部件),m(供应商),d(总价格),这些数据都小于100。
    接下来的2n行,每行m个数。前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

    #include <iostream>
    using namespace std;
    int n;
    int m;
    int V;
    int w[105][105];
    int v[105][105];
    int minw = 0xffffff;
    int mv, mw;
    
    int f(int i){
    	if(i == n){  //已近达到了n个不用再去搜索部件 
    		if(mw < minw){
    			minw = mw;
    //			return 0;
    		}
    		return 0; //搜索完毕退出 
    	}
    
    		for(int l = 0; l < m; l++){
    			 mv += v[i][l];
    			 mw += w[i][l];
    			 if(mv <= V && mw < minw)
    				 f(i + 1);
    			 mv -= v[i][l];
    			 mw -= w[i][l];
    		}
    }
    
    int main(){
    	
    	cin >> n >> m >> V;
    	for(int i = 0; i < n; i++){
    		for(int j = 0 ; j < m; j++)
    			cin >> v[i][j];
    	}
    	for(int i = 0; i < n; i++){
    		for(int j = 0 ; j < m; j++)
    			cin >> w[i][j];
    	}
    	f(0);
    	cout << minw;
    	return 0;
    }
    

      

  • 相关阅读:
    关于Ajax中this失效
    添加时间周期一年半年季度
    回车事件
    alt与title
    关于checked="checked"却不显示选中的“对勾”
    正则表达式的使用
    关于JQ 查找不到对象的clientHeight,
    Mysql笔记之 -- 开启Mysql慢查询
    Mysql笔记之 -- 小试MYSQL主从配置
    Linux系统学习笔记之 1 一个简单的shell程序
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7922755.html
Copyright © 2020-2023  润新知