请教大家一个问题。
比如我现在手上有长度为A1,A2,……An的绳子,他们的条数分别为M1,M2,……,Mn。我要从中选出任意几条,接起来的长度最接近于一个长度X。要找到最佳的组合,我该怎么做。能不能写个C#的原代码给我,谢谢哦!好像是背包问题,但小弟不太懂。
比如我现在手上有长度为A1,A2,……An的绳子,他们的条数分别为M1,M2,……,Mn。我要从中选出任意几条,接起来的长度最接近于一个长度X。要找到最佳的组合,我该怎么做。能不能写个C#的原代码给我,谢谢哦!好像是背包问题,但小弟不太懂。
楼主【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
$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;
}
}更高效的算法 楼下的说 嘿嘿