php 0-1,PHP 动态解决0-1背包问题
这篇文章主要为大家详细介绍了PHP 动态解决0-1背包问题,具有一定的参考价值,可以用来参考一下。
对PHP动态规划解决0-1背包问题感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!
背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t, 每个物品的价值为v。
要使得这个背包重量最大(但不能超过W),同时又需要背包的价值最大。
/**
* PHP动态规划解决0-1背包问题
*
* @param
* @arrange 512-笔记网: www.512Pic.com
**/
/**
*背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t, 每个物品的价值为v。
* 要使得这个背包重量最大(但不能超过W),同时又需要背包的价值最大。
*思路:定义一个二维数组,一维为物品数量(表示每个物品),二维是重量(不超过最大,这里是15),下面数组a,
* 动态规划原理思想,max(opt(i-1,w),wi+opt(i-1,w-wi)) 当中最大值,
* opt(i-1,w-wi)指上一个最优解
*/
//这是我根据动态规划原理写的
// 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";
}
/*** 来自512笔记(www.512pic.com) ***/
注:关于PHP 动态解决0-1背包问题的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。
关键词:0-1背包
php 0-1,PHP 动态解决0-1背包问题相关推荐
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- android 7.0原生动态,Android7.0适配教程,心得
Android7.0发布已经有一个多月了,Android7.0在给用户带来一些新的特性的同时,也给开发者带来了新的挑战,这几天我将应用适配到Android7.0,其中也遇到了不少问题也踩了一些坑,在这 ...
- 原创安卓手机QQ7.0登录界面动态背景视频实现方案
qq7.0登录界面动态背景实现 qq7.0登录界面动态视频背景实现 android动态视频背景 android动态背景 分析qq7.0: 视频在打开登录界面就开始播放 了,而且期间无黑屏 而且是循环播 ...
- PA 2.0 中的动态类型安全查询
JPA 2.0 中的动态类型安全查询 如何通过 Criteria API 构建动态查询并减少运行时失败 如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Jav ...
- C语言动态规划法解决0/1背包问题(详细解答)
动态规划法解决0/1背包问题(详细解答) 首先让我们回顾一下动态规划法的使用规则: 一..动态规划法的实现思路: 1.划分子问题:将元问题分解为若干个子问题,每一个子问题对应一个决策,并且子问题之间具 ...
- php 5/0,PHP 5.5.0 released.该怎么解决
当前位置:我的异常网» PHP » PHP 5.5.0 released.该怎么解决 PHP 5.5.0 released.该怎么解决 www.myexceptions.net 网友分享于:2013 ...
- 完美解决:You are using pip version 9.0.1, however version 18.0 is available.
问题描述: You are using pip version 9.0.1, however version 18.0 is available. You should consider upgrad ...
- npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法 参考文章: (1)npm ERR ...
- 成功解决You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgr
成功解决You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgr 目 ...
- 成功解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra
成功解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra 目 ...
最新文章
- 什么是Python?前景怎么样?
- mongodb数据库淘汰_红帽彻底不跟MongoDB玩了,只认PostgreSQL
- 零基础python必背代码-零基础小白Python入门必看:通俗易懂,搞定深浅拷贝
- JZOJ 5192. 【NOI2017模拟7.2】容器
- ArcGIS下的多节点可达性分析
- Apache Tika:通用的内容分析工具
- python3-开发进阶-RESTful 软件架构风格
- 使用“ Row_Number”功能和WHILE循环创建滚动平均值报告
- 软考中级网络工程师笔记(一)
- pdf增强锐化软件_分享一波图像处理软件神器,绝对牛皮!!
- java 编写hl7标准接口_java – 需要解析HL7消息
- 《国际学术论文写作与发表》课后题
- oracle与r语言时间转换,R语言时间序列中时间年、月、季、日的处理操作
- 皮德常《c++程序设计教程》第一章第二题:编写一个程序,要求用户输入一年12个月每月的降雨总数,并用一个float数组存储。
- vue-loader was used without the corresponding plugin.
- android wifi 流程图_实现双wifi的方法及Android终端与流程
- java中的IO流(超全)(超详解)结合实例轻松掌握
- 2019双11猫晚直播技术详解(附演讲PDF)
- Python批量采集某网站高清壁纸,这下不用担心没壁纸换了
- keil设置c语言字体大小,Keil uVision4怎么放大字体?放大字体和关键字标注颜色方法介绍...
热门文章
- ASP.NET WebForm和Mvc开发的比较
- c#中通过win32API(FindWindowEx)查找控件句柄实例
- 对窗口过程函数WndProc()的一点理解
- 谷粒商城高级篇资料_一文搞定剑指offer面试题【分文别类篇】
- 利用OpenCvSharp处理图片并在winformd的pictureBox中显示
- java nio is例子,Java Buffer isDirect()用法及代码示例
- osgCallback的实现方法及原理
- Android开发之打开指定APP | 打开APP任意页面的方法
- key map 模糊查找_lua脚本语言批量删除模糊查询的key
- Android中的JSON解析方式:json; Gson ; Fastjson