PHP 0-1背包問題

2021-01-11 峰哥說PHP

0-1背包問題背景

我們有n種物品,物品j的重量為wj,價格為pj。我們假定所有物品的重量和價格都是非負的。背包所能承受的最大重量為W。如果限定每種物品只能選擇0個或1個,則問題稱為0-1背包問題。

背包問題

遞歸算法

假如背包的容量是C=6,物品的體積為w,對應的物品的價值為v。我們從最後一個物品開始,如果它的體積比背包剩餘容量小,它面臨著兩種選擇:1,放進背包;2,不放進背包。

如果它的體積比背包剩餘容量大,那麼就不能放進背包,n往前走。如上圖所示,每個物品都面臨著這種選擇,直到n<0,即沒物品可放。

下面為背包問題的遞歸算法。

遞歸算法的問題是,有好多的重複計算,時間複雜度為2的n次方,n為物品數量。

動態規划算法

動態規劃跟遞歸非常相似,不同的地方在於使用一個數組來記錄已經計算過的,避免重複計算。

在上面代碼中假如4行後就變為動態規劃了,時間複雜度也變為O(n*c)

相關焦點

  • PHP 框架 QueryPHP 1.0.3 發布,兼容 PHP 8.0 和 PHP 8.1
    QueryPHP 1.0.3 僅僅做了對 PHP 8.0 和 PHP 8.1 兼容性處理,修復了 PHP 8 下面的代碼和測試用例。
  • Php常見問題總結
    解決方法:(1)在c盤建立文件夾tmp(2)打開php.ini,找到session.save_path,修改為session.save_path= "c:/tmp"#p#Php部分常見問題總結(二)#e#4:為什麼我向另一網頁傳送變量時,只得到前半部分,以空格開頭的則全部丟失
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    polarphp 項目介紹polarphp是一個全新的PHP語言的運行時環境,基於目前最新的zend virtual machine進行打造,支持最新的語言規範,同時提供了自己的運行時標準庫 (libpdk)。
  • windows 檢查php版本專題及常見問題 - CSDN
    目的:解決用戶在windows環境下運行ngoos2.0的問題。安裝apcu下載php_apcu-5.1.8-7.0-nts-vc14-x86.zip,下載地址:( http://pecl.php.net/package/APCu/5.1.8/windows ),找到php 7.0 7.0 Non
  • Hyperf 發布 v1.1.0 版本,企業級的 PHP 微服務雲原生協程框架
    過去的3個半月從 6月20日 Hyperf 1.0 發布以來,Hyperf 受到了非常多的關注,也獲得了非常多的建議和幫助,截止至今
  • DVBBS ASP7.1 AC到PHP1.0升級教程
    1、要先說明,你的空間要支持PHP和MYSQL。2、下載轉換程序3、下載原程序4、把下載的原程序壓縮包解壓上傳到空間目錄,如我的:PHP目錄下。5、傳完安裝,運行:install/install.php。
  • PHP框架 Solar 1.1.2發布!
    solar PHP發布1.1.2版本,並更新手冊2章(Command-line tools及Mail),請移步英文官方站查看:http://solarphp.com/ ,中文文檔和windows版會儘快跟進。。。順便說一句,在xp下使用solar已經不是問題,請繼續關注,謝謝!
  • PHP實例——PHP創建動態圖像
    如果安裝的是gd-1.6或以前的版本,可以使用GIF格式的文件但不能創建PNG格式,如果安裝的是gd-1.6以後的版本,可以創建PNG文件但不能創建GIF格式的文件。      創建一幅簡單的圖像也需要用到許多的函數,我們將一步一步地進行說明。
  • 動態規劃:關於01背包問題,你該了解這些!(滾動數組)
    dp[j]表示:容量為j的背包,所背的物品價值可以最大為dp[j],那麼dp[0]就應該是0,因為背包容量為0所背的物品的最大價值就是0。那麼dp數組除了下標0的位置,初始為0,其他下標應該初始化多少呢?
  • 超級背包能解決背包問題?恐怕拓展背包數目才是根本!
    超級背包能解決背包問題?恐怕拓展背包數目才是根本!但除了它們之外,其實還有一個道具也是玩家們苦苦哀求官方再度放出,它就是超級背包!自18年五月份的一錘定音之後,超級背包就再也沒有放出,今年年初的超級背包雖然名字相似,但是功能卻完全不同,一個是全部背包永久,一個是相當於防彈衣的效果。
  • PHP 二進位打包工具 phiwrapper 發布 1.0 版本
    phiwrapper 是一個用於打包胖「二進位」的工具phiwrapper可以通過batsh使得同一文件包含不同平臺的二進位,可以在不同平臺運行:例如,使用phiwrapper打包 Windows 的 PHP PE 二進位和,linux的ELF二進位以及php代碼,在Windows下可以雙擊運行file.bat文件開啟服務,linux下可以用sh .
  • DVBBS php轉換工具使用教程
    目前轉換程序只有四種,即:1、動網的ASP7.1 AC 轉到 動網PHP1.02、動網的ASP7.1 MSSQL 轉到 動網PHP1.03、DISCUZ4.1 轉到 動網PHP1.04、DISCUZ5.0 轉到 動網PHP1.0一、說明:1、訪問你的轉換路徑,各文件對應的轉換說明如下2、asp71ac-to-php10
  • php中函數禁用繞過的原理與利用
    php new Imagick('test.mvg');利用那麼依舊以靶場題為例,依舊以擁有一句話馬兒為前提,我們首先上傳一個圖片,如上面所述的我們圖片的後綴無需mvg,因此上傳一個jpg圖片:push graphic-context viewbox 0 0 640 480 image over 0,0 0,0 'https://127.0.0.1/x.php
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。
  • php基礎大通關——十分鐘了解php基礎知識點之二
    本節我們繼續通過練習題的方式來熟悉php的基礎知識點。1. echo 和 print 有什麼區別?php常用函數3. Joomla 在 PHP 中是什麼? 可以 不行解析:php是腳本語言,不能生成.exe或者DLL文件。6. 用戶 IP 地址存儲在哪個變量中? $_SERVER['DOMAIN'] $GLOBALS $_ENV $_SERVER['REMOTE_ADDR']解析:使用 $_SERVER[『REMOTE_ADDR』] 獲取客戶端 IP。7. 可以同時運行多個版本的 PHP 嗎?
  • 關於PHP 5.4 你所需要知道的
    =標記永遠生效 等等……PHP 5.4.0 性能大幅提升, 修復超過100個bug. 廢除了register_globals, magic_quotes以及安全模式。 另外值得一提的是多字節支持已經默認啟用了,default_charset從ISO-8859-1已經變為UTF-8.
  • php基礎通關大挑戰,看看你能過幾關!
    繼續上一節的內容,通過試題的方式查缺補漏,看看你的php基礎知識還有哪些漏洞!1.在php中,以下代碼列印的結果是?<?php$RESULT =11+011+0x11;echo "$RESULT";?
  • 鳥哥:讓你的 PHP 7 更快之 Hugepage
    HugePages_Free:        0    HugePages_Rsvd:        0    HugePages_Surp:        0    Hugepagesize:       2048 kB可見一個Hugepage的size是2MB, 而當前並沒有啟用HugePages.
  • PHP圖片處理庫Grafika詳細教程(1):圖像基本處理
    PHP >= 5.3,當然官方推薦php7 GD庫 >= 2.0版本 Imagick最好(不強求)>=3.3.0 , ImageMagick >= 6.5.3 部署 下載下來的Grafika目錄基本結構像下面這樣:   不過composer下載下來的多一點兒,你只需要使用kosinix/
  • 一起來捉妖:妖靈背包成最大問題,不斷地積攢,背包空間就不夠用
    現如今遊戲中的妖靈數量可以說已經是非常多的了,不過妖靈數量的增加,也未必就是一件好事,雖說妖靈逐漸的增加,遊戲中的一些問題也是逐漸的顯現了出來。最近在網上不少的玩家也都是希望官方能夠開放妖靈背包上限。大家都知道遊戲中的妖靈背包跟道具背包相同,都是有一個固定的容量的,而達到固定容量之後,就只能用鑽石進行擴容。