csdn上的一个问题的回复

 问题如下:
标准材料有若干根6m的木材
要取
3m的5根
1.55m的7根
1.66m的9根
等等
如何才能是用的6m的材料最少呢
代码:
  1.  ArrayList needs=new ArrayList();
  2.             #region 加载测试数据
  3.             for (int i = 0; i < 5; i++)
  4.             {
  5.                 needs.Add(3);
  6.             }
  7.             for (int i = 0; i < 7; i++)
  8.             {
  9.                 needs.Add(1.55);
  10.             }
  11.             for (int i = 0; i < 9; i++)
  12.             {
  13.                 needs.Add(1.66);
  14.             }
  15.  
  16.             #endregion
  17.             //从大到小排序
  18.             IComparer myComperMethod = new comper();
  19.             needs.Sort(myComperMethod);
  20.             string result = string.Empty;
  21.             //迭代方法
  22.             for (int i = 0; i < needs.Count; )
  23.             {
  24.                 double temp =double.Parse(needs[i].ToString());
  25.                 ArrayList tempResult = new ArrayList();
  26.                 tempResult.Add(needs[i]);
  27.                 needs.RemoveAt(i);
  28.                 for (int j = 0; j < needs.Count; )
  29.                 {
  30.                     if (temp + double.Parse(needs[j].ToString()) > 6)
  31.                     {
  32.                         j++;
  33.                     }
  34.                     else
  35.                     {
  36.                         temp += double.Parse(needs[j].ToString());
  37.                         tempResult.Add(needs[j]);
  38.                         needs.RemoveAt(j);
  39.                     }
  40.                 }
  41.                 //记录结果
  42.                 for (int k= 0; k < tempResult.Count; k++)
  43.                 {
  44.                     result += tempResult[k].ToString() + ",";
  45.                 }
  46.                 result += "<br>";
  47.             }
  48.             
  49.             Response.Clear();
  50.             Response.Write(result);
  51.             Response.End();
结果:八条木头

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值