#include
#include
#define N 222
#define M 20008
#define MAX 10000000
int a[N][N];
char s[N];
int f[N][N];
char an[M];
void dill(int i,int j)
{
if(i>j) return;
if(f[j]==-1)
{
if(i==j)
{
if(s=='(' || s==')')
printf("()");
else if(s=='[' || s==']')
printf("[]");
}
else
{
printf("%c",s);
dill(i+1,j-1);
printf("%c",s[j]);
}
}
else
{
int k=f[j];
dill(i,k);
dill(k+1,j);
}
}
int main()
{
int i,j,k,m;
int l;
scanf("%s",s);
l=strlen(s);
memset(a,0,sizeof(a));
memset(f,0xff,sizeof(f));
for(k=0;ka[i+1][j-1])
min=a[i+1][j-1];
}
else if(s=='[' && s[j]==']')
{
if(min>a[i+1][j-1])
min=a[i+1][j-1];
}
for(m=i;ma[m]+a[m+1][j])
{
min=a[m]+a[m+1][j];
f[j]=m;
}
}
a[j]=min;
}
}
}
dill(0,l-1);
printf("\n");
return 0;
}
各位大哥写一下注释
别人的程序没看懂
能看懂的大哥能写一下注释吗
|