首页 > 编程语言 >php动态规划

php动态规划

时间:2022-11-22 11:08:59浏览次数:40  
标签:动态 value item limit 物品 array php 规划 newvalue

问题:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、单价与重量如下所示:
1 栗子 4KG $4500
2 苹果 5KG $5700
3 橘子 2KG $2250
4 草莓 1KG $1100
5 甜瓜 6KG $6700
分析:背包问题是关于最佳化的问题,要解最佳化问题可以使用「动态规划」(Dynamic programming),从空集合开始,每增加一个元素就先求出该阶段的最佳解,直到所有的元素加入至集合中,最后得到的就是最佳解。
源码:

//背包承重上限
$limit = 8;
//物品种类
$total = 5;
//物品
$array = array(
array("栗子", 4, 4500),
array("苹果", 5, 5700),
array("橘子", 2, 2250),
array("草莓", 1, 1100),
array("甜瓜", 6, 6700)
);
//存放物品的数组
$item = array_fill(0, $limit + 1, 0);
//存放价值的数组
$value = array_fill(0, $limit + 1, 0);
$p = $newvalue = 0;
for ($i = 0; $i < $total; $i++) {
for ($j = $array[$i][1]; $j <= $limit; $j++) {
$p = $j - $array[$i][1];
$newvalue = $value[$p] + $array[$i][2];
//找到最优解的阶段
if ($newvalue > $value[$j]) {
$value[$j] = $newvalue;
$item[$j] = $i;
}
}
}
echo "物品 价格<br />";
for ($i = $limit; 1 <= $i; $i = $i - $array[$item[$i]][1]) {
echo $array[$item[$i]][0] . " " . $array[$item[$i]][2] . "<br />";
}
echo "合计 " . $value[$limit];

 

标签:动态,value,item,limit,物品,array,php,规划,newvalue
From: https://blog.51cto.com/u_11635800/5877038

相关文章

  • php切片上传
    由来:在上传文件过程中,如果文件过大第一占用服务器带宽,所以为了减少网络代码,提高用户体验度在客户端【浏览器】首先将资源【图片,资源】使用分页原理将资源切分,然后上传至服......
  • 用php入门网络编程
    学习思路以下是我对学习网络编程的一个简单的学习思路,之后我将会按照这个计划去逐步学习网络编程相关的知识。step1.原生php实现TCPServer->原生php实现http协议->掌......
  • php-socket
    网络中是如何通信数据传输?ip+端口+协议实现网络进程之间的通信,几乎所有的应用程序都是采用socket,“一切皆socket”。HTTPTCPSOCKET区别Http协议:对应于应用层。Http协......
  • adsl动态拨号服务器有什么不同?
    adsl动态拨号服务器是什么?是属于VPS的其中一种类型吗?服务器那么多分类,大家确实很容易搞混,下面由掌柜给大家介绍下adsl动态拨号服务器。adsl拨号服务器又叫动态拨号vps、动......
  • 动态开点线段树
    简单来说就是,你要用到一个点才开那个点,不用的点不开,可以大幅节省空间。这样空间复杂度可以大致降到O(nlogn)。是不是很棒。接下来是实现:一开始,你只有一个根节点。通过updat......
  • 生产计划体系完整解决方案(2) : 复杂大规模问题之 - 分区规划
    本文章是生产计划体系完整解决议定的第2篇-复杂大规模问题之-分区规划。在完整的规划体系中,针对不同的场景与需求,需要对应的规划方案。在上一篇(生产计划体系......
  • 依据前端返回参数,动态构建lambda表达式
    1、构建前端返回类///<summary>///查询明细///</summary>publicclassQueryItem{///<summary>///查询项字段///......
  • php 在LINUX下创建目录失败的解决方法
    mkdir(APP_PATH.'tempinfo/getport/'.$config_name,0777,true);创建多级目录时使用参考https://jingyan.baidu.com/article/63acb44ac8ec5861fdc17e4d.html......
  • PHP 新特性 linux安装ssh2
    p7新特性p7新特性http://www.aichengxu.com/view/5446277 已经云http://www.lai18.com/content/2442224.html 已经云p7安装ssh2http://www.mobibrw.com/2016/4049//ssh2最......
  • MacOS12安装Homebrew、PHP8.0
    MacOS12安装HomebrewMacOS12Monterey已经不自带PHP了,所以手动安装PHP首先安装Homebrew在控制台输入以下命令,使用国内源安装,亲测不光速度快,而且自动装一些必要的依赖;并且......