| ||||||||||
| 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 | |||||||||
求教,错在哪儿#include<iostream>
#include<stdlib.h>
using namespace std;
int ar[101],f[101][101],v[101][101];
string s;
int outar[201],count1;
int work(int b,int e)
{
if(b>e)return 0;
if(b==e){outar[++count1]=-abs(ar[b]);outar[++count1]=abs(ar[b]);return 0;}
int i;
if(v[b][e]==-1)
{
outar[++count1]=ar[b];
work(b+1,e-1);
outar[++count1]=ar[e];
return 0;
}
else
{
work(b,v[b][e]);
work(v[b][e]+1,e);
return 0;
}
}
int main()
{
//freopen("poj1141.in","r",stdin);
//freopen("poj1141.out","w",stdout);
int m,n;
int i,j,k;
cin>>s;
n=s.length();
for(i=1;i<=n;i++)
{
if(s[i-1]=='(')ar[i]=-2;
if(s[i-1]=='[')ar[i]=-1;
if(s[i-1]==')')ar[i]=2;
if(s[i-1]==']')ar[i]=1;
}
for(i=1;i<=n;i++)
f[i][i]=1;
for(i=1;i<n;i++)
if(!(ar[i]+ar[i+1]==0&&ar[i]<0))
{
f[i][i+1]=2;
v[i][i+1]=i;
}
else
{
f[i][i+1]=0;
v[i][i+1]=-1;
}
for(i=2;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(ar[j]+ar[j+i]==0&&ar[j]<0)
{
f[j][j+i]=f[j+1][j+i-1];
v[j][j+i]=-1;
}
else
{
f[j][j+i]=300;
}
for(k=j;k<j+i;k++)
{
if(f[j][j+i]>f[j][k]+f[k+1][j+i])
{
f[j][j+i]=f[j][k]+f[k+1][j+i];
v[j][j+i]=k;
}
}
}
}
count1=0;
work(1,n);
for(i=1;i<=count1;i++)
{
if(outar[i]==-2)cout<<'(';
if(outar[i]==-1)cout<<'[';
if(outar[i]==2)cout<<')';
if(outar[i]==1)cout<<']';
}
}
各种数据都测了,全是对的
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator