首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

回溯法求解最小重量机有关问题

2013-10-15 
回溯法求解最小重量机问题描述 设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设wiy

回溯法求解最小重量机问题

描述

 

设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设wiy是从供应商j 处购得的部件i的重量,ciy是相应的价格。试设计一个算法,给出总价格不超过c的最小重量机器设计。

对于给定的机器部件重量和机器部件价格,编程计算总价格不超过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

 

bool   backtrack(int i)  // 搜索到第i个零件

{

   if(i>n)

       按算法特征 ,此时解为最优;

       return  true; 

   else

     bool found=false;

    if(当前最优解<d)

     found=true;

      for(j=1;j<=m;j++) //考虑每一个供应商供应i零件的情况

{

      更新总重量;

      更新总价格;

     if(价格<=d, 总量<目前最优解)

           if( backtrack(i+1))

                  return ture;

    还原重量;

    还原价格;

}

return found;

}

 

算法优化:

   在考虑供应商时,设置mark[][]数组;

  若对于某一件产品,   对于某一供应商来讲,存在价格和重量都占优势的其他供应商,那么在回溯时此供应商不予考虑

 

 

 

 

 

 

 

 

 

 

热点排行