POJ 1141 Brackets Sequence 区间dp
2014-05-14 15:15
441 查看
递归输出下就行了
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,l,h) for(int i=(l);i<=(h);++i) #define DWN(i,h,l) for(int i=(h);i>=(l);--i) #define CLR(vis) memset(vis,0,sizeof(vis)) #define MST(vis,pos) memset(vis,pos,sizeof(vis)) #define MAX3(a,b,c) max(a,max(b,c)) #define MAX4(a,b,c,d) max(max(a,b),max(c,d)) #define MIN3(a,b,c) min(a,min(b,c)) #define MIN4(a,b,c,d) min(min(a,b),min(c,d)) #define PI acos(-1.0) #define INF 0x7FFFFFFF #define LINF 1000000000000000000LL #define eps 1e-8 typedef long long LL; int dp[111][111]; int path[111][111]; char s[111]; void print(int i, int j) { if(i>j) return; if(i==j) { if(s[i]=='(' || s[i]==')') cout<<"()"; else cout<<"[]"; } else { if(path[i][j]>=0) { print(i,path[i][j]); print(path[i][j]+1, j); } else { if(s[i]=='(') { cout<<"("; print(i+1,j-1); cout<<")"; } else { cout<<"["; print(i+1, j-1); cout<<"]"; } } } } int main() { scanf("%s",s+1); int n=strlen(s+1); CLR(dp); FOR(i,1,n) dp[i][i]=1; FOR(p,1,n-1) { FOR(i,1,n-p) { int j=i+p; dp[i][j]=INF; if((s[i]=='(' && s[j]==')' ) || (s[i]=='[' && s[j]==']' ) ) { dp[i][j]=min(dp[i][j],dp[i+1][j-1]); path[i][j]=-1; } FOR(k,i,j-1) { //dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); if(dp[i][k]+dp[k+1][j]<dp[i][j]) { dp[i][j]=dp[i][k]+dp[k+1][j]; path[i][j]=k; } } } } print(1,n); cout<<endl; return 0; }
相关文章推荐
- POJ 1141(Bracket Sequence)-区间DP
- POJ 1141 Brackets Sequence(区间DP, DP打印路径)
- poj1141 Brackets Sequence(区间dp记录路径问题)
- 区间dp模型之括号匹配打印路径 poj(1141)
- POJ 1141 Brackets Sequence (区间DP + DFS )
- POJ 1141 Brackets Sequence(区间DP记录路径)
- poj 1141 Brackets Sequence(区间DP)
- POJ 1141 Brackets Sequence(区间DP)
- POJ 1141 Brackets Sequence (区间DP)
- 区间dp(POJ - 1141)
- ZOJ 1463 POJ 1141 Brackets Sequence (区间DP) #by Plato
- POJ 1141 Brackets Sequence (区间DP)
- poj 1141(区间dp 滚动数组)
- POJ 1141 Brackets Sequence——区间dp
- POJ 1141 区间DP
- poj 1141(区间dp+打印路径)
- poj 1141 Brackets Sequence(区间dp)
- POJ 1141 Brackets Sequence 区间dp
- POJ-1141 Brackets Sequence 区间dp
- poj 1141 Brackets Sequence(区间DP+路径打印)