VB.NET,实际应用:求最短残料。

来源:互联网 发布:淘宝机票查询预订 编辑:程序博客网 时间:2024/05/16 01:28
有一根长度为321米的钢材料,要将它截取成两种规格a、b的长度分别为17米和27米的短料,每种至少 1 段,问分隔成 a,b 各多少段后,剩余的残料 r 最少?分析:该题利用“试凑法”通过二重循环求残料 r 的最小值(正数),残料不可能是负数。
Dim a%, b%, r!, ia%, ib%     
r = 321                                     ‘ 最小值初值取钢材料的长度
For b = 1 To 321 / 27                 ‘b最多的段数         
   For a = 1 To (321-b*27) / 17      ‘a最多的段数            
       t = 321 -b * 27 - a * 17              ‘ 当前的残料            
       If t > 0 And t < r Then                       
          r = t                                         ‘ 求最短的残料                   
         ia = a                                       ‘ 最短残料时a的段数                   
         ib = b                                       ‘ 最短残料时b的段数            
       End If            
    Next a   
Next b