PHP回溯法解决0-1背包问题实例分析


Posted in PHP onMarch 23, 2015

本文实例讲述了PHP回溯法解决0-1背包问题的方法。分享给大家供大家参考。具体分析如下:

这段代码是根据《软件设计师》教程的伪代码写的;
最麻烦的不是伪代码改成php,而是数组下标从0开始,及相应的下标判断问题;
带着调试输出一块写上

<?php
  $v_arr = array(11,21,31,33,43,53,55,65);
  $w_arr = array(1,11,21,23,33,43,45,55);
  $n = count($w_arr );
  //测试输出
  var_dump(bknap1(110));
//var_dump(bound(139,89,7,110));
  function bound($v,$w,$k,$W_total){
    global $v_arr,$w_arr,$n;
    $b = $v;
    $c = $w;
//var_dump($W_total);var_dump($n);var_dump($k);var_dump($v);var_dump($w);
//die;
    for($i=$k+1;$i<$n;$i++){
      $c = $c + $w_arr[$i];
      //var_dump($W_total);var_dump($c);
      if($c<$W_total)
        $b += $v_arr[$i];
      else{
//var_dump((1-($c-$W_total)/$w_arr[$i])*$v_arr[$i]);
        $b = $b+(1-($c-$W_total)/$w_arr[$i])*$v_arr[$i];
        return $b; 
      }
    }
    /*var_dump('------bound head');
    var_dump($k);
    var_dump($b);
    var_dump('------bound end');*/
    return $b; 
  }
  function bknap1($W_total){
    global $v_arr,$w_arr,$n;
    $cw = $cp = 0;
    $k = 0;
    $fp = -1;
    while(true){
      while($k<$n && $cw+$w_arr[$k]<=$W_total){
        $cw += $w_arr[$k];
        $cp += $v_arr[$k];
        $Y_arr[$k] = 1;
        $k +=1;
      }
//var_dump($cw);var_dump($cp);var_dump($Y_arr);var_dump($k);var_dump($n);
      if($k==$n){
        $fp = $cp;
        $fw = $cw;
        $k = $n-1;
        $X_arr = $Y_arr;
//bound($cp,$cw,$k,$W_total);
//var_dump(bound($cp,$cw,$k,$W_total),$fp,$k);die;
//var_dump($fp);var_dump($fw);var_dump($Y_arr);var_dump($k);var_dump($n);
      }else{
        $Y_arr[$k] = 0;
      }
//var_dump($Y_arr);var_dump($k);var_dump($n);//die;
//var_dump(bound($cp,$cw,$k,$W_total),$fp);die;
      while(bound($cp,$cw,$k,$W_total)<=$fp)
      {
        while($k>=0 && $Y_arr[$k]!=1){
          $k -= 1;
        }
        if($k<0)
        {
          return $X_arr;
        }
        var_dump($k);
        $Y_arr[$k] = 0;
        $cw -= $w_arr[$k];
        $cp -= $v_arr[$k];
      }
      $k += 1;
    }
  }
?>

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

PHP 相关文章推荐
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
深入理解php的MySQL连接类
Jun 07 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
php处理复杂xml数据示例
Jul 11 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
php post换行的方法
Feb 03 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #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
You might like
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
详解如何较好的使用js
2016/12/16 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
机器学习python实战之决策树
2017/11/01 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
python对csv文件追加写入列的方法
2019/08/01 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
2014年体育部工作总结
2014/11/13 职场文书
护士节慰问信
2015/02/15 职场文书
班主任高考寄语
2015/02/26 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书