ナップザック問題の動的プログラミング#1

羅区P1048ハーブ

「01バックパック」

達成するための二次元配列:

 

1  のためのint型 i = 1 ; iが= Mを<Iは++ ){
 2      INT J = 0 ; J <= T; J ++ ){
 3          DP [I] [J] = DP [I- 1 ] [J] ;
4          もし(JT [i]が> = 0 ){
 5              DP [I] [J] = MAX(DP [I- 1 ] [JT [I] + V [i]は、DP [I] [J])。
6          }
 7      }
 8  }   
 9のprintf(" %dの"、DP [T] [M])。         

 

時間複雑:$ O(T * M)$

宇宙複雑:$ O(T * M)$

一次元アレイの最適化:空間的複雑度を(最適化します)

 

羅区P1616クレイジーハーブ

質問の意味:

小さなハーブ、T時間があり、薬物のM種類の合計は、各薬物ハーブ時間t I及びハーブ価値V iが与えられたが、各薬剤は、ハーブの値が最大時間を超えないようにどのように無制限の数を取ることができます?

 

 

おすすめ

転載: www.cnblogs.com/liuziwen0224/p/11514833.html