| ||||||||||
| 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 | |||||||||
我的为什么WA啊?#include <iostream>
#include <string>
using namespace std;
int n,flag;
char A[202],B[202],C[10000];
int result,a,b,c,k;
int re[1001],s[202][100000],pos[202][402],total[402];
int y[402],X[202],z[202];
//S1,...,Sa;
//total[1]*...*total[a];
int judge()
{
int i,k,tr;
//给定解空间X后,判断是否对
for (i=0;i<c;i++) y[i]=0;
for (i=0;i<a;i++) y[X[i]]=1;
k=-1;
for (i=0;i<c;i++)
{
if (y[i]==0)
{
k+=1;
z[k]=i;
}
}
tr=1;
for (i=0;i<b;i++)
if (B[i]!=C[z[i]])
{
tr=0;
break;
}
return tr;
}
void input()
{
cin>>A;
cin>>B;
cin>>C;
result=0;
a=strlen(A);
b=strlen(B);
c=strlen(C);
}
void initial()
{
int i,j,k;
for (i=0;i<a;i++)
{
k=0;
for (j=0;j<c;j++)
{
if (A[i]==C[j])
{
s[i][j]=1;
k+=1;
pos[i][k]=j;
}
else s[i][j]=0;
}
total[i]=k;
}
}
int advance(int k)
{
int i;
for (i=1;i<=total[i];i++)
{
if (k==0 || (k>0 && pos[k][i]>X[k-1]))
{
X[k]=pos[k][i];
if (k==a-1 && judge()==1)
{
return 1;
}
if (k<a-1) return advance(k+1);
}
}
return 0;
}
void main()
{
int i;
cin>>n;
for (i=1;i<=n;i++)
{
input();
initial();
flag=false;
re[i]=advance(0);
}
for (i=1;i<=n;i++)
if (re[i]==1) printf("Data set %d: yes\n",i);
else printf("Data set %d: no\n",i);
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator