PHP動(dòng)態(tài)規(guī)劃解決0-1背包問(wèn)題實(shí)例分析
本文實(shí)例分析了PHP動(dòng)態(tài)規(guī)劃解決0-1背包問(wèn)題。分享給大家供大家參考。具體分析如下:
背包問(wèn)題描述:一個(gè)承受最大重量為W的背包,現(xiàn)在有n個(gè)物品,每個(gè)物品重量為t, 每個(gè)物品的價(jià)值為v。
要使得這個(gè)背包重量最大(但不能超過(guò)W),同時(shí)又需要背包的價(jià)值最大。
思路:定義一個(gè)二維數(shù)組,一維為物品數(shù)量(表示每個(gè)物品),二維是重量(不超過(guò)最大,這里是15),下面數(shù)組a,
動(dòng)態(tài)規(guī)劃原理思想,max(opt(i-1,w),wi+opt(i-1,w-wi)) 當(dāng)中最大值,
opt(i-1,w-wi)指上一個(gè)最優(yōu)解
<?php //這是我根據(jù)動(dòng)態(tài)規(guī)劃原理寫(xiě)的 // max(opt(i-1,w),wi+opt(i-1,w-wi)) //背包可以裝最大的重量 $w=15; //這里有四件物品,每件物品的重量 $dx=array(3,4,5,6); //每件物品的價(jià)值 $qz=array(8,7,4,9); //定義一個(gè)數(shù)組 $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) => 進(jìn)行比較 if($tmp>$a[$j][$i]){ $a[$j][$i]=$tmp; } } } } //打印這個(gè)數(shù)組,輸出最右角的值是可以最大價(jià)值的 for ($j=0;$j<=4;$j++){ for ($i=0;$i<=15;$i++){ echo $a[$j][$i]."/t"; } echo "/n"; } ?>
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
相關(guān)文章
php使用MySQL保存session會(huì)話(huà)的方法
這篇文章主要介紹了php使用MySQL保存session會(huì)話(huà)的方法,涉及php操作session及數(shù)據(jù)庫(kù)的相關(guān)技巧,需要的朋友可以參考下2015-06-06淺談Coreseek、Sphinx-for-chinaese、Sphinx+Scws的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談Coreseek、Sphinx-for-chinaese、Sphinx+Scws的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12PHP中對(duì)緩沖區(qū)的控制實(shí)現(xiàn)代碼
在PHP 4.0里面加入了緩沖區(qū)控制的幾個(gè)函數(shù),使用這些函數(shù)可以幫我們解決很多問(wèn)題2013-09-09PHP基于ffmpeg實(shí)現(xiàn)轉(zhuǎn)換視頻,截圖及生成縮略圖的方法
這篇文章主要介紹了PHP基于ffmpeg實(shí)現(xiàn)轉(zhuǎn)換視頻,截圖及生成縮略圖的方法,涉及php使用ffmpeg針對(duì)視頻文件的截圖、生成縮略圖等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08自己在做項(xiàng)目過(guò)程中學(xué)到的PHP知識(shí)收集
以前沒(méi)學(xué)過(guò)PHP,最近剛好一個(gè)項(xiàng)目需要用到,我就決定一邊學(xué)一邊做PHP2012-08-08PHP日期時(shí)間函數(shù)的高級(jí)應(yīng)用技巧
PHP的日期時(shí)間函數(shù)date()中介紹了PHP日期時(shí)間函數(shù)的簡(jiǎn)單用法,這類(lèi)將介紹更多的函數(shù)來(lái)豐富我們的應(yīng)用。2009-05-05PHP實(shí)現(xiàn)批量生成App各種尺寸Logo
這篇文章主要介紹了PHP實(shí)現(xiàn)批量生成App各種尺寸Logo的方法和示例的核心代碼,非常的簡(jiǎn)單實(shí)用,這里推薦給小伙伴們,有需要的可以參考下。2015-03-03