php實作 稱砝碼(背包)
一、總結
一句話總結:
1、dp的實質是什麼?
刷表啊,用空間換時間
把表畫出來會做得更快
13 //动态规划就是一个表 14 //至于这个表的更新就是上面层的表更新下面层的,是逐级更新还是跳级更新要注意 15 //把表画出来做的更快
2、dp的初始狀態怎麼得到(其實可以最開始想到的就是用所求做狀態)?
其實可以最開始想到的就是用所求做狀態
4 //dp就是思考变量(然后变量组合成初始状态):变量有用几种砝码,每种砝码有多少个,重量为多少
3、dp的狀態轉移方程式怎麼得到?
用不同的初始狀態去試
一維不行就加到二維,二維不行就加到3維
4、這裡又忘記初始化中間數組了(在不同的組別數據之間)?
26 $dp=null; 27 $dp[0]=1;
二、稱砝碼(背包)
題目描述
現有一組砝碼,重量互不相等,分別為m1,m2,m3…mn;
每種砝碼對應的數量為x1,x2,x3...xn。現在要用這些砝碼去稱物體的重量,問能秤出多少中不同的重量。
附註:
稱重重量包含0
方法原型:public static int fama (int n, int[] weight, int[] nums)
輸入說明:
输入包含多组测试数据。 对于每组测试数据: 第一行:n --- 砝码数(范围[1,10]) 第二行:m1 m2 m3 ... mn --- 每个砝码的重量(范围[1,2000]) 第三行:x1 x2 x3 .... xn --- 每个砝码的数量(范围[1,6])
輸出描述:
利用給定的砝碼可以稱出的不同的重量數
範例1
輸入
2 1 2 2 1
輸出
5
程式碼:
1 <?php 2 //php本身是桶,所以这里用重量来做dp是可以的 3 //初始状态 最终状态 状态转移方程 4 //dp就是思考变量(然后变量组合成初始状态):变量有用几种砝码,每种砝码有多少个,重量为多少 5 //f[i][j]表示用了第i种砝码用了j个所能达到的重量 6 //dp方程为:f[i+1][]=f[i][j]+ 7 8 //f[i][j]表示前i种物品能否达到j重量 9 //f[i][j]=(或者关系)第i件物品取0到n(i)件能够达到 10 //f[i-1][j]||(取)f[i-1][j]+k*wi[k 0->ni] 11 //f[i][j][k]表示前i种物品取j件能否达到k重量 12 13 //动态规划就是一个表 14 //至于这个表的更新就是上面层的表更新下面层的,是逐级更新还是跳级更新要注意 15 //把表画出来做的更快 16 while($n=trim(fgets(STDIN))){ 17 $w=trim(fgets(STDIN)); 18 $num=trim(fgets(STDIN)); 19 $w=explode(' ',$w); 20 $num=explode(' ',$num); 21 $total=10; 22 for($i=0;$i<$n;$i++){ 23 $total+=$w[$i]*$num[$i]; 24 } 25 26 $dp=null; 27 $dp[0]=1; 28 for($i=1;$i<=$n;$i++){ 29 for($j=$total;$j>=0;$j--){ 30 for($k=0;$k<=$num[$i-1];$k++){ 31 if($j-$k*$w[$i-1]>=0&&$dp[$j-$k*$w[$i-1]]){ 32 $dp[$j]=1; 33 break; 34 } 35 } 36 } 37 } 38 echo count($dp).PHP_EOL; 39 //print_r($w); 40 //print_r($num); 41 42 } 43 ?>
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關建議:
以上是php實作稱砝碼的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。