首页 > 代码库 > 01背包问题实现探究
01背包问题实现探究
参考博文http://blog.csdn.net/mu399/article/details/7722810
另外bilibili有个讲背包01的视频也挺生动的。
<?php//背包01问题class Item{ public $weight; public $value; public function __construct($weight,$value){ $this->weight = $weight; $this->value = http://www.mamicode.com/$value; }}class Bag{ private $items; public function __construct($items){ $this->items = $items; } private $resultMap = array(); function bestBag($k,$w){ if($k==0 || $w==0){ return 0; } if(isset($this->resultMap[$k][$w])){ return $this->resultMap[$k][$w]; } if($k==1) { if ($this->items[$k]->weight > $w) { return 0; } else { return $this->items[$k]->value; } } $res1 = $this->bestBag($k-1,$w); if($w-$this->items[$k]->weight>0){ $res2 = $this->bestBag($k-1,$w-$this->items[$k]->weight)+$this->items[$k]->value; }else{ $res2 = 0; } $result = max($res1,$res2); if(!isset($this->resultMap[$k][$w])){ $this->resultMap[$k][$w] = $result; } return $result; }}$items = array();for($i = 1;$i<6;$i++){ $item = new Item($i,$i+3); $items[$i] = $item;}print_r($items);$bagTest = new Bag($items);echo $bagTest->bestBag(5,60);exit;
01背包问题实现探究
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。