有這樣乙個問題:樓梯有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堆石子。接下來的一...