FZU---2030 括号问题[爆搜||DP]
2012-09-18 00:34
253 查看
Problem 2030 括号问题
Accept: 217 Submit: 417
给出一个字符串,其中包括3种字符: ‘(‘, ‘)’, ‘?’.其中?表示这个字符可以是’(‘也可以是’)’. 现在给出字符串S,你可以在’?’处填写’(‘ 或者 ‘)’,当然随意填写得到的序列可能是括号不匹配的。例如”(?”,如果你填写’(‘那么”((“是括号不匹配的! 现在你的任务是确定你有多少种填写方案,使得最终的字符串是括号匹配的!2种方案是不同的,当2种方案中至少存在1个填写字符是不同的。 例如,对于”((??))”,我们可以得到2种方案: “((()))”, “(()())”。
数据包含多组测试数据第一行输入一个字符串S(S的长度不超过16)。
输出一个整数,表示合法的填写方案数。
((??))
2
福州大学第八届程序设计竞赛
code:
Accept: 217 Submit: 417
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
给出一个字符串,其中包括3种字符: ‘(‘, ‘)’, ‘?’.其中?表示这个字符可以是’(‘也可以是’)’. 现在给出字符串S,你可以在’?’处填写’(‘ 或者 ‘)’,当然随意填写得到的序列可能是括号不匹配的。例如”(?”,如果你填写’(‘那么”((“是括号不匹配的! 现在你的任务是确定你有多少种填写方案,使得最终的字符串是括号匹配的!2种方案是不同的,当2种方案中至少存在1个填写字符是不同的。 例如,对于”((??))”,我们可以得到2种方案: “((()))”, “(()())”。
Input
数据包含多组测试数据第一行输入一个字符串S(S的长度不超过16)。
Output
输出一个整数,表示合法的填写方案数。
Sample Input
((??))
Sample Output
2
Source
福州大学第八届程序设计竞赛code:
#include<iostream> #include<cstdio> using namespace std; char str[1010]; int len; int cnt; void fun(int pos,int k) { if(pos==len&&k==0) { cnt++; } else if(k<0) { } else if(str[pos]=='?') { fun(pos+1,k-1); fun(pos+1,k+1); } else if(str[pos]=='(') { fun(pos+1,k+1); } else if(str[pos]==')') { fun(pos+1,k-1); } } int main() { while(gets(str)) { cnt=0; len=strlen(str); fun(0,0); printf("%d\n",cnt); } return 0; }
相关文章推荐
- dp:FZU2030括号问题
- FZU 2030 括号问题 dfs/dp
- FZU FOJ 2030 括号问题【dp】||【暴搜+栈判断括号匹配】
- FZU 2030 括号问题
- FZU 2030 括号问题
- fzu 2030 括号问题(DFS)
- FZU 2030 括号问题 (括号匹配)
- FZU 2030 括号问题 (DFS)
- FZU Problem 2030 括号问题
- NYOJ15 - UVA1626 括号匹配问题(dp)
- 区间dp 括号匹配问题
- hihoCoder 1300 展胜地的鲤鱼旗 (括号匹配问题 dp)
- fzu 1227 鸡毛信问题(树形DP)
- 【CodeForces 149D】 【dp+dfs好题】D. Coloring Brackets【在限制条件下括号染色问题】
- 区间DP问题(矩阵连乘,石子合并,括号匹配)
- NYOJ15 - UVA1626 括号匹配问题(区间dp)
- 括号匹配问题 区间DP经典问题
- FZU 1416 飞机加油问题(DP)
- poj 2955 Brackets(区间DP,经典问题)求有规律的括号的最大长度