编程题:括号序列--easy version
*原题来自CSP-S 2021 本题略有改动*
给定一个长度为$n$的括号序列,有些位置确定了,有些位置没有确定,未确定的位置用?表示,求合法括号序列有多少。
一个合法括号序列满足下列条件:
1.()是合法的括号序列
2.若 $S$ 是合法的括号序列,那么$SS, (S)$也是合法的括号序列
### 输入格式:
第一行输入一个正整数$n(1 \leq n \leq 2000)$
第二行输入一个长度为$n$的字符串,表示括号序列。数据保证字符串只由(,),?组成。
### 输出格式:
输出一个非负整数表示答案对 $10^9+7$ 取模的结果。
### 输入样例1:
in
4
(??)
### 输出样例1:
out
2
给定字符串可能形成下面两种合法的括号序列
(())
()()
### 输入样例2:
in
5
?????
### 输出样例2:
out
0
### 输入样例3:
in
6
(????)
### 输出样例3:
out
5
有以下五种情况
((()))
(()())
()()()
(())()
()(())
答案:若无答案欢迎评论
用$dp_{i,j}$表示前$i$个字符中还有$j$个(需要匹配的答案的数量。
若$s[i]$可以为(,那么$dp_{i,j} += dp_{i - 1, j - 1}$
若$s[i]$可以为),那么$dp_{i,j} += dp_{i - 1, j + 1}$
最终答案就是$dp_{n,0}$
给定一个长度为$n$的括号序列,有些位置确定了,有些位置没有确定,未确定的位置用?表示,求合法括号序列有多少。
一个合法括号序列满足下列条件:
1.()是合法的括号序列
2.若 $S$ 是合法的括号序列,那么$SS, (S)$也是合法的括号序列
### 输入格式:
第一行输入一个正整数$n(1 \leq n \leq 2000)$
第二行输入一个长度为$n$的字符串,表示括号序列。数据保证字符串只由(,),?组成。
### 输出格式:
输出一个非负整数表示答案对 $10^9+7$ 取模的结果。
### 输入样例1:
in
4
(??)
### 输出样例1:
out
2
给定字符串可能形成下面两种合法的括号序列
(())
()()
### 输入样例2:
in
5
?????
### 输出样例2:
out
0
### 输入样例3:
in
6
(????)
### 输出样例3:
out
5
有以下五种情况
((()))
(()())
()()()
(())()
()(())
答案:若无答案欢迎评论
用$dp_{i,j}$表示前$i$个字符中还有$j$个(需要匹配的答案的数量。
若$s[i]$可以为(,那么$dp_{i,j} += dp_{i - 1, j - 1}$
若$s[i]$可以为),那么$dp_{i,j} += dp_{i - 1, j + 1}$
最终答案就是$dp_{n,0}$