请教大家一个问题。
比如我现在手上有长度为A1,A2,……An的绳子,他们的条数分别为M1,M2,……,Mn。我要从中选出任意几条,接起来的长度最接近于一个长度X。要找到最佳的组合,我该怎么做。能不能写个C#的原代码给我,谢谢哦!好像是背包问题,但小弟不太懂。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【biaozijian】截止到2008-07-04 14:34:52的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    要C#代码 来错地方了吧 呵呵 俺不会写C# 给个PHP写法 算做思路
    $a = array(); //编号做KEY 值做长度
    asort($a); //对数组做降序排序
    $x = ''; //目标长度
    $result = array(); //结果 KEY做编号 值做长度
    while (list($k, $v) = each($a)){
    if ($v < $x){
    $result[$k] = $v;
    $x -= $v;
    }else if($v == $x){
                    break;
            }
    }更高效的算法 楼下的说 嘿嘿
      

  3.   

    ∑(Ai*Ci)→X,(0≤Ci≤Mi,1≤i≤n)一般算法:N重循环(可通过递归实现)
      

  4.   

    hao nan a ... 不会啊