Hrbust 2230 括号子序列-A【dp】感谢Zqc!
来源:互联网 发布:js遍历jsong数组赋值 编辑:程序博客网 时间:2024/06/05 23:06
括号子序列-ATime Limit: 500 MSMemory Limit: 32768 KTotal Submit: 40(12 users)Total Accepted: 14(10 users)Rating: Special Judge: NoDescription
一段括号序列被称为平衡的,如果对于任意前缀,左括号的数目都不小于右括号。
给定一段括号序列,问有多少括号子序列是平衡的。(内容相同但位置不同的算两种。)
Input 输入一行括号序列,括号序列的长度 <= 100。Output 输出一行表示答案模 10^9 + 7 后的结果。Sample Input(()())
()()
Sample Output18
4
Hint样例一:
(_)___
(___)_
(____)
_()___
_(__)_
_(___)
___()_
___(_)
_()()_
(_)()_
(_)(_)
_()(_)
((_ _))
(()_)_
(()__)
(__())
_(_())
(()())
Source"诚德软件杯"哈尔滨理工大学第四届ACM程序设计团队赛思路(感谢Zqc的帮助以及高大上的O(n^2)思路):
考虑dp,设定dp【i】表示左括号比右括号多i个的方案数。
其状态转移方程:
①if(a【i】==‘(’)dp【i+1】+=dp【i】;
②if(a【i】==‘)’)dp【i-1】+=dp【i】;
Ac代码:
#include<stdio.h>#include<string.h>using namespace std;#define mod 1000000007char a[150];int dp[150];int main(){ while(~scanf("%s",a)) { int n=strlen(a); memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=0;i<n;i++) { if(a[i]=='(') { for(int j=130;j>=0;j--) { dp[j+1]+=dp[j]; dp[j+1]%=mod; } } else { for(int j=1;j<130;j++) { dp[j-1]+=dp[j]; dp[j-1]%=mod; } } } printf("%d\n",dp[0]-1); }}
0 0
- Hrbust 2230 括号子序列-A【dp】感谢Zqc!
- Hrbust 1835 最长递增子序列(dp)
- hrbust 哈理工OJ 2010 二等队形【dp】【最长递减子序列问题】
- hrbust 2287 Bridge【最长上升子序列变形+dp最小花费】好题
- poj1141 括号序列 dp
- dp uva1626 括号序列
- 括号序列 区间DP
- hrbust 1835 最长递增子序列【nlogn】
- Hrbust 2191 最大序列和【dp+思维】
- 最长公共子括号序列
- 【区间dp】括号序列再战猪猪侠
- Hrbust 2210 A Wonderful Concert【Dp】水题
- DP 动态规划 Problem A 1001 最长子序列
- 严格上升子序列 dp CF Round_FF div1 A
- 3295: 括号序列 -(序列DP)
- DP最大子序列
- DP 子序列问题
- 子序列个数(DP)
- Nginx安装及配置
- Hibernate缓存机制学习笔记
- [算法]直线与圆的交点程序设计
- MongoDB在.NET中使用官方驱动的插入操作
- 智商被碾压1.15
- Hrbust 2230 括号子序列-A【dp】感谢Zqc!
- 重复字符串(powerstr)
- linux下的dnw软件的使用
- HTML5&CSS3初学者指南(1) – 编写第一行代码
- OIBH杯第三次普及组模拟赛T1 立体井字棋
- C#如何释放已经加载的图片
- eclipse中server location灰色,如何修改?
- 【游戏架构分享】我是怎么开发第一款游戏的
- 操作系统I/O:阻塞和非阻塞