動態規劃用法歸納

2021-07-11 01:48:30 字數 1147 閱讀 6458

在實際應用中,展示動態規劃的用法。

01揹包問題

#include#includeusing namespace std;

int val[5000];

int wei[5000];

int f[13000];

inline int max(int a,int b)

int main()

cout<

大意:一共有n個管道,每個管道的**和流量不同,乙個裝置由不同的管道構成,每種管道有多種選擇,他們的**或流量不同,結果應選出**之和最小與最小管道流量最大的組合。

#include#include#include#includeusing namespace std;

#define max(a,b) (a>b?a:b)

struct reco

re[120][120];

int mip[120];

int dp[120][1200];//dp[i][j],,,i表示第i號線路,j表示流量

int main()

}for(int i=0;i<=maxb;++i) //後面會用到dp[0],而其值應為0.

dp[0][i]=0;

float ans=0;

for(int i=1;i<=line;++i)

for(int j=1;j<=mip[i];++j)

for(int i=1;i<=maxb;++i)

ans=max(ans,1.0*i/dp[line][i]);

cout<

完全揹包問題:

每種物品都可以取任意次。

#include#includeusing namespace std;

int min(int a,int b)

int dp[10010];

int weic;//重量

int valc;//面值

int weight;

void solve()}}

if(dp[weight]!=-1)

cout<<"the minimum amount of money in the piggy-bank is "<>t;

while(t--)

}

未完待續。。。

線性動態規劃的歸納總結

lcs問題 矩陣路徑問題 只能往右或往下 其他線性dp 歸納模式二 相鄰選點 歸納模式三 物品分配 歸納模式四 線段覆蓋 雜項歸納模式六 方法1,o n2 暴力 int main ans max ans,f i cout 方法2,o nlogn 二分查詢 void run int n cout in...

線段樹用法歸納

基本的建立線段樹和查詢一段區間內最小值與最大值。方法一 include include includeusing namespace std struct sto int a 1000300 sto m 8000300 構建線段樹,目的 得到m陣列.void build int node,int b...

split 的用法歸納

python中常常用到split 方法,今天歸納一下這個方法具體用法1.input split 輸入wang a tao 會被自動分割為wang a tao 三個單元,並且每個單元都是乙個整體 s wang a tao split 此時s為list型 for i in s print i 輸出結果 ...