Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
无语,c++过了,g++wa?代码:#include<iostream> #include<cstdio> #include<cstring> using namespace std; int dp[105][105],path[105][105],b[105]; char s[105]; void print(int left,int right) { if(left>=right) { return; } if(path[left][right]==-1) { // b[left]=-1; print(left+1,right); } else { b[left]=1; b[path[left][right]]=1; //printf("%d %d\n",left,path[left][right]); print(left+1,path[left][right]-1); print(path[left][right]+1,right); } } int main() { scanf("%s",s); { memset(dp,0,sizeof(dp)); memset(path,-1,sizeof(path)); memset(b,0,sizeof(b)); int len=strlen(s); len--; for(int i=0;i<=len;i++) dp[i][i]=1; for(int i=len-1;i>=0;i--) { for(int j=i+1;j<=len;j++) { dp[i][j]=dp[i+1][j]+1; path[i][j]=-1; for(int k=i+1;k<=j;k++) { if(s[i]=='('&&s[k]==')') { //dp[i][j]=min(dp[i][j],); if(dp[i][j]>dp[i+1][k-1]+dp[k+1][j]) { dp[i][j]=dp[i+1][k-1]+dp[k+1][j]; path[i][j]=k; } } if(s[i]=='['&&s[k]==']') { if(dp[i][j]>dp[i+1][k-1]+dp[k+1][j]) { dp[i][j]=dp[i+1][k-1]+dp[k+1][j]; path[i][j]=k; } } } } } //printf("%d\n",dp[0][len]); print(0,len); for(int i=0;i<=len;i++) { if(b[i]==0) { if(s[i]=='('||s[i]==')') printf("()"); if(s[i]=='['||s[i]==']') printf("[]"); } else printf("%c",s[i]); } //for(int i=0;i<=len;i++) //printf("%d ",b[i]); printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator