uva 1626 Brackets Sequence ❀(动态规划)
来源:互联网 发布:mac照片icloud 编辑:程序博客网 时间:2024/06/03 21:13
状态表示方法:d[ i ][ j ]表示的是一条序列的开始和结束;
状态定义:d[ i ][ j ]表示字串s[ i~j ] 需要添加的数量。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;char s[105];int d[105][105];bool match(char ch1,char ch2){ if((ch1=='['&&ch2==']')||(ch1=='(')&&ch2==')') return true; return false;}void dp(){ for(int i=0;i<n;i++) { d[i+1][i]=0; d[i][i]=1; } for(int i=n-2;i>=0;i--) { for(int j=i+1;j<n;j++) { d[i][j]=n; if(match(s[i],s[j])) d[i][j]=min(d[i][j],d[i+1][j-1]); for(int k=i;k<j;k++) d[i][j]=min(d[i][j],d[i][k]+d[k+1][j]); } }}void print(int i,int j){ if(i > j) return; if(i == j) { if(s[i]=='('||s[j]==')') printf("()"); else printf("[]"); return; } int ans = d[i][j]; if(match(s[i],s[j])&&ans==d[i+1][j-1]) { printf("%c",s[i]); print(i+1,j-1); printf("%c",s[j]); return; } for(int k=i;k<j;k++) { if(ans==d[i][k]+d[k+1][j]) { print(i,k); print(k+1,j); return; } }}int main(){ int t; scanf("%d",&t); getchar(); for(int kase=1;kase<=t;kase++) { gets(s); gets(s); n = strlen(s); if(n==0){ printf("\n"); if(kase!=t) printf("\n"); continue; } dp(); print(0,n-1); printf("\n"); if(kase!=t) printf("\n"); } return 0;}
对本题来说,这是一道关于括号匹配的题目。关于括号匹配的题目很多,又用栈来实现的,也有想这道题一样,要动规来记录状态实现的。
状态不好定义不好想,状态转移也不好定义不好想,但是,哪有那么多不好想呢。
不会就学不懂就研究,你学会了做过了不就记住了么
0 0
- 【UVA】1626-Brackets sequence(动态规划)
- uva 1626 Brackets Sequence ❀(动态规划)
- Uva-1626-Brackets sequence
- UVA 1626 - Brackets sequence
- UVa 1626 Brackets sequence
- uva 1626 - Brackets sequence
- UVA-1626Brackets sequence
- uva 1626 Brackets sequence
- UVA 1626 Brackets sequence
- UVA 1626 Brackets sequence
- UVA 1626 Brackets sequence
- UVA 1626 Brackets sequence
- UVa 1626:Brackets Sequence(DP)
- [ACM] poj 1141 Brackets Sequence (动态规划)
- POJ1141 Brackets Sequence (dp动态规划,递归)
- [ACM] POJ 1141 Brackets Sequence (区间动态规划)
- POJ 1141 Brackets Sequence 动态规划
- 动态规划 Brackets Sequence poj 1141
- HDU3339 In Action 【SPFA】+【01背包】
- 贴近客户需求!助力企业发展!
- 深入理解 CSS 中的行高与基线
- 类别,属性,成员变量,arc学习总结
- Requirement Summary of vehicle bus protocol stack in AUTOSAR
- uva 1626 Brackets Sequence ❀(动态规划)
- 链表
- ios XCode中显示行号
- HDU-#2000-2020 HDU水题系列(一)
- SDUT 2860-生日Party(BFS)
- STM32位带操作详解
- java解析json数组
- Android 的目录结构解析
- java中如何按一定的格式输出时间, 必须给出例子