| ||||||||||
| 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++程序怎么总编译错误啊 都10多次了 大牛门帮忙看啊啊 谢谢#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