在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
有一堆货物,有各种大小和价值不等的多个物品,而你只有固定大小的背包,拿走哪些能保证你的背包带走的价值最多 动态规划就是可以记录前一次递归过程中计算出的最大值,在之后的递归期间使用,以免重复计算。
<?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);
|
2022-07-18
2022-08-17
2022-11-06
2022-07-29
2022-08-18
请发表评论