PHP动态规划解决0-1背包问题实例分析


Posted in PHP onMarch 23, 2015

本文实例分析了PHP动态规划解决0-1背包问题。分享给大家供大家参考。具体分析如下:

背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t, 每个物品的价值为v。
要使得这个背包重量最大(但不能超过W),同时又需要背包的价值最大。

思路:定义一个二维数组,一维为物品数量(表示每个物品),二维是重量(不超过最大,这里是15),下面数组a,
动态规划原理思想,max(opt(i-1,w),wi+opt(i-1,w-wi)) 当中最大值,
opt(i-1,w-wi)指上一个最优解

<?php
//这是我根据动态规划原理写的
// max(opt(i-1,w),wi+opt(i-1,w-wi))
//背包可以装最大的重量
$w=15;
//这里有四件物品,每件物品的重量
$dx=array(3,4,5,6);
//每件物品的价值
$qz=array(8,7,4,9);
//定义一个数组
$a=array();
//初始化
for($i=0;$i<=15;$i++){ $a[0][$i]=0; }
for ($j=0;$j<=4;$j++){ $a[$j][0]=0; }
//opt(i-1,w),wi+opt(i-1,w-wi)
for ($j=1;$j<=4;$j++){
  for($i=1;$i<=15;$i++){
    $a[$j][$i]=$a[$j-1][$i];
    //不大于最大的w=15
    if($dx[$j-1]<=$w){
      if(!isset($a[$j-1][$i-$dx[$j-1]])) continue;
      //wi+opt(i-1,wi)
      $tmp = $a[$j-1][$i-$dx[$j-1]]+$qz[$j-1];
      //opt(i-1,w),wi+opt(i-1,w-wi) => 进行比较 
      if($tmp>$a[$j][$i]){
        $a[$j][$i]=$tmp;
      }
    }
  }
}
//打印这个数组,输出最右角的值是可以最大价值的
for ($j=0;$j<=4;$j++){
  for ($i=0;$i<=15;$i++){
    echo $a[$j][$i]."/t";
    } echo "/n";
}
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
PHP中Trait及其应用详解
Feb 14 PHP
php显示页码分页类的封装
Jun 08 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
PHP echo()函数讲解
Feb 15 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
php post换行的方法
Feb 03 PHP
如何使用php生成zip压缩包
Apr 21 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 #PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 #PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 #PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 #PHP
Codeigniter检测表单post数据的方法
Mar 21 #PHP
codeigniter发送邮件并打印调试信息的方法
Mar 21 #PHP
You might like
php面向对象 字段的声明与使用
2012/06/14 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
Prototype使用指南之string.js
2007/01/10 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
python实现加密的方式总结
2020/01/19 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
python文件路径操作方法总结
2020/12/21 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
十佳少先队员演讲稿
2014/09/12 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
目标责任书格式范文
2015/05/11 职场文书
摘录式读书笔记
2015/07/01 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
筑梦中国心得体会
2016/01/18 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers