| ||||||||||
| 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 | |||||||||
char or[105];就是错的In Reply To:现在写的c++程序怎么总编译错误啊 都10多次了 大牛门帮忙看啊啊 谢谢 Posted by:200694068 at 2008-03-25 19:28:25 > #include <iostream.h>
> #include <string.h>
>
> #define M 9999999;
> char or[105];
> char r[105][105][300];
> int dp[105][105];
> int min(int x,int y);
>
> int main()
> {
> int len,i,j,k,p,m,n,q;
>
> cin.getline(or,105);
> len=strlen(or);
> for (i=0;i<len;i++)
> {
> if(or[i]=='(')
> {
> r[i][i][0]='(';
> r[i][i][1]=')';
> }
> if(or[i]==')')
> {
> r[i][i][0]='(';
> r[i][i][1]=')';
> }
> if(or[i]=='[')
> {
> r[i][i][0]='[';
> r[i][i][1]=']';
> }
> if(or[i]==']')
> {
> r[i][i][0]='[';
> r[i][i][1]=']';
> }
>
> }
> for (i=0;i<len;i++)
> dp[i][i]=1;
> for (i=1;i<len;i++)
> dp[i][i-1]=0;
> for (p=1;p<len;p++)
> for (i=0;i<len-p;i++)
> {
> j=i+p;
> if(j==len)continue;
> dp[i][j]=M;
> if(((or[i]=='(')&&(or[j]==')')) || ((or[i]=='[')&&(or[j]==']')))
> {
> if(dp[i][j]>dp[i+1][j-1])
> {
> dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
> if(or[i]=='(')
> {
> r[i][j][0]='(';
> for (k=0;;k++)
> {
> if(r[i+1][j-1][k]=='\0')break;
> r[i][j][k+1]=r[i+1][j-1][k];
> }
> r[i][j][k+1]=')';
> }
> if(or[i]=='[')
> {
> r[i][j][0]='[';
> for (k=0;;k++)
> {
> if(r[i+1][j-1][k]=='\0')break;
> r[i][j][k+1]=r[i+1][j-1][k];
> }
> r[i][j][k+1]=']';
> }
>
> }
> }
> if((or[i]=='(')||(or[i]=='['))
> {
>
> if(dp[i+1][j]<dp[i][j])
> {
> dp[i][j]=min(dp[i+1][j],dp[i][j])+1;
> if(or[i]=='(')
> {
> r[i][j][0]='(';
> for (k=0;;k++)
> {
> if(r[i+1][j][k]=='\0')break;
> r[i][j][k+1]=r[i+1][j][k];
> }
> r[i][j][k+1]=')';
>
> }
> else
> {
> r[i][j][0]='[';
> for (k=0;;k++)
> {
> if(r[i+1][j][k]=='\0')break;
> r[i][j][k+1]=r[i+1][j][k];
> }
> r[i][j][k+1]=']';
> }
> }
> }
> if((or[j]==')')||(or[j]==']'))
> {
>
> if(dp[i][j-1]<dp[i][j])
> {
> dp[i][j]=min(dp[i][j-1],dp[i][j])+1;
> if(or[j]==')')
> {
> r[i][j][0]='(';
> for (k=0;;k++)
> {
> if(r[i][j-1][k]=='\0')break;
> r[i][j][k+1]=r[i][j-1][k];
> }
> r[i][j][k+1]=')';
>
> }
> else
> {
> r[i][j][0]='[';
> for (k=0;;k++)
> {
> if(r[i+1][j][k]=='\0')break;
> r[i][j][k+1]=r[i][j-1][k];
> }
> r[i][j][k+1]=']';
> }
> }
>
> }
> q=j;
> for (k=i;k<j;k++)
> {
> if(dp[i][k]+dp[k+1][j]<dp[i][j])
> {
> dp[i][j]=dp[i][k]+dp[k+1][j];
> q=k;
> }
> }
>
> if(q!=j)
> {
> for (m=0;;m++)
> {
> if(r[i][q][m]=='\0')break;
> r[i][j][m]=r[i][q][m];
> }
> for (n=0;;n++)
> {
> if(r[q+1][j][n]=='\0')break;
> r[i][j][m]=r[q+1][j][n];
> m++;
> }
> }
>
>
> }
> cout<<r[0][len-1]<<endl;
> return 0;
> }
>
> int min(int x,int y)
> {
> if(x>y)
> return y;
> else
> return x;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator