• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP实现动态规划背包问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有一堆货物,有各种大小和价值不等的多个物品,而你只有固定大小的背包,拿走哪些能保证你的背包带走的价值最多

动态规划就是可以记录前一次递归过程中计算出的最大值,在之后的递归期间使用,以免重复计算。

 

<?php                                                                                                                                        
 
$thing_arr = array(
    array('size' => 9, 'weight' =>10),
    array('size' => 4, 'weight' => 5), 
    array('size' => 6, 'weight' => 4), 
    array('size' => 7, 'weight' => 9), 
);
 
$max_package_arr = array();
$max_thing_arr   = array();
 
function package($space)
{
    global $thing_arr, $max_package_arr, $max_thing_arr;
    if (isset($max_package_arr[$space])) return $max_package_arr[$space];
    $max_value = 0;
    foreach($thing_arr as $thing) 
    {   
        if (($rest_space = $space-$thing['size'])>0)
        {   
            if (($value = package($rest_space) + $thing['weight']) > $max_value )
            {   
                $max_package_arr[$space] = $max_value = $value;
                $max_thing_arr[$space] = $thing['weight'];
            }   
        }   
    }   
    return $max_value;
}
 
 
echo package(12);
print_r($max_thing_arr);

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP生成一个不重复随机数组的封装方法发布时间:2022-07-10
下一篇:
切换Mac默认PHP版本为MAMP发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap