基礎dp學習

2021-10-17 10:59:26 字數 2157 閱讀 6645

有這樣乙個問題:樓梯有n階,可以一步上1階,也可以上2階,問n階樓梯有多少種走法

題目鏈結 洛谷p1225

這道題後面答案比較大,需要高精度處理,為了規避這個不必要的麻煩,使用python

n =

int(

input()

)dp =

list()

0)1)

2)for i in

range(3

, n +1)

:1]+ dp[i -2]

)print

(dp[n]

)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const

int maxn =

2e5+

100;

int data[maxn]

;int coins[5]

=;int dp[maxn]

;int

main()

} cout<;return0;

}

hdu2069

這道題就是上個問題的加強版,現在加了乙個條件,硬幣數量現在有限,問方案數

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const

int maxn =

2e5+

100;

int data[maxn]

;int coins[5]

=;int dp[

1000][

1000];

intmain()

}}for(

int i=

0;i<=

100;i++)}

while

(cin>>n) cout<

}

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const

int maxn =

2e5+

100;

int data[maxn]

;int dp[

1005][

1005];

int a[maxn]

,b[maxn]

;int

main()

}}cout<[v]<}return0;

}

骨頭體積可能為0,j要從0開始

int dp[

1005];

int a[maxn]

,b[maxn]

;int

main()

} cout<<}return0;

}

DP基礎(線性DP)總結

前言 雖然確實有點基礎.但凡事得腳踏實地地做,基礎不牢,地動山搖,嗯!dp方程 dp i max 複雜度 o n 2 法一 資料結構無腦暴力優化 以a i 為陣列下標,從1到a i 訪問最大值,再加一,進行更新 法二 設h k 表示dp值為k的最長上公升子串行的最小值 有點貪心在裡面 顯然h k h...

dp基礎小結

kuangbin帶你飛系列,基礎dp 總共20多道題,就不一一說了 說一下學會的關鍵的思路 第1點 有的時候某一狀態的值的得出,可能會要我們列舉已經計算過的值,一一比較取最值,但如果真的去列舉的話就會超時,這時我們可以把狀態的含義設為前i項的最值,計算的時候只需要多比較一項,即和前一項比較一下就可以...

區間DP基礎

題目描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。輸入有多組測試資料,輸入到檔案結束。每組測試資料第一行有乙個整數n,表示有n堆石子。接下來的一...