題目鏈結
描述
我們定義長度為2n的不一定合法括號序列為左右括號個數均為n的序列。
我們定義不一定合法括號序列的bad指數為這個序列當中沒有對應右括號的左括號的個數。
給出n,k。求bad指數為k的長度為2n的不一定合法括號序列的個數。
由於答案很大,你只需要輸出對109 + 7取餘的結果。
輸入一行兩個整數n,k
對於30%的資料 1 ≤ k ≤ n ≤ 10
對於100%的資料 1 ≤ k ≤ n ≤ 300
輸出乙個整數表示答案。
樣例輸入
2 1樣例輸出
3
動態規劃方法,三元組(i,j,k)刻畫狀態,三元組表示考慮到第i個位置,已經出現了左括號j個,未匹配的左括號k個。
轉移方程:
左括號 ( 壞數+1
dp(i+1,j+1,k+1) = dp(i+1,j+1,k+1) + dp(i,j,k)
右括號 ( 壞數-1
dp(i+1,j,k-1) = dp(i+1,j,k-1) + dp(i,j,k)
#include #include #include #include using namespace std;
const int n = 305;
const int mod = 1e9 + 7;
int dp[n*2][n][n];
int n,k;
int main()
dp[i][j][s] %= mod;*/}
}}
printf("%d\n", dp[m][n][k]);
return 0;
}
hihoCoder 骨牌覆蓋問題 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...
hihoCoder 骨牌覆蓋問題 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...
hihoCoder每週一題
時間限制 10000ms 單點時限 1000ms include include include include includeusing namespace std int n,m define max 26 struct trie trie void createtrie char str el...