01背包问题实现探究
2017-01-09 18:10
323 查看
参考博文http://blog.csdn.net/mu399/article/details/7722810
另外bilibili有个讲背包01的视频也挺生动的。
另外bilibili有个讲背包01的视频也挺生动的。
<?php //背包01问题 class Item{ public $weight; public $value; public function __construct($weight,$value){ $this->weight = $weight; $this->value = $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背包问题-状态d[i][j],f[i][j],滚动数组--java实现
- 01背包问题的java界面实现
- 01背包问题 java实现
- 01背包问题算法实现
- 01背包问题python实现
- 01背包问题 动态规划 c语言实现
- 01背包问题(回溯法)python实现
- 背包问题---01背包最优方案总数(原理剖析代码实现)
- 动态规划之背包问题01--java实现
- 01背包问题概述及实现(有改动)
- 01背包、完全背包、多重背包问题的C++实现
- 01背包问题 及c++ 代码实现
- 01背包问题实现源码
- 01背包,完全背包,多重背包问题详细介绍以及源代码实现
- 01背包问题的C/C++实现
- 动态规划之背包问题01——Java实现
- 01背包问题(用c语言实现)-回溯法求解
- 动态规划三部曲之01背包问题的分析和实现(二)
- 01背包问题的java界面实现
- 背包问题---01背包最优方案总数(原理剖析代码实现)