| ||||||||||
| 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 | |||||||||
多组数据?In Reply To:求教,错在哪儿 Posted by:kill_myself at 2011-04-05 00:02:01 > #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