| ||||||||||
| 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 <algorithm>
#include <cstring>
using namespace std;
int a['z'-'a'][20005];
char s[20005][200];
char ku[20005][200];
int len[20005];
int main()
{
int n;
scanf("%d",&n);
for (int ha=1;ha<=n;ha++)
{
char w[2000];
memset(a,0,sizeof(a));
memset(len,0,sizeof(len));
memset(ku,0,sizeof(ku));
int b['z'-'a']={0};
scanf("%s",w);
int m;
scanf("%d",&m);
for (int i=1;i<=m;i++)
{
scanf("%s",s[i]);
int c=strlen(s[i]);
strcpy(ku[i],s[i]);
// printf("%s\n",ku[i]);
if (c>3)
sort(s[i]+1,s[i]+c-1);
char cha;
cha=s[i][c-1]-'a';
b[cha]+=1;
a[cha][b[cha]]=i;
len[i]=c;
// printf("%s\n",s[i]);
}
// system("pause");
int f[1005]={0};
int f1[1005]={0};
f[0]=1;
int c;
int zong;
zong=0;
c=strlen(w);
for (int i=1;i<=c;i++)
{
char cha;
cha=w[i-1]-'a';
int jilu;
jilu=b[cha];
for (int j=1;j<=jilu;j++)
if (i>=len[a[cha][j]])
if (s[a[cha][j]][0]==w[i-len[a[cha][j]]])
{
char zan[105];
memset(zan,0,sizeof(zan));
int be,en;
be=i-len[a[cha][j]]+1;
en=i;
for (int h=be;h<=en;h++)
zan[h-be]=w[h-1];
// cout<<en-be+1<<endl;
if (en-be+1>3)
sort(zan+1,zan+len[a[cha][j]]-1);
// printf("%s\n",zan);
if (strcmp(s[a[cha][j]],zan)==0)
{
f[i]+=f[i-len[a[cha][j]]];
if (f[i-len[a[cha][j]]]==1)
f1[i]=a[cha][j];
}
}
}
char ss[3000];
if (f[c]==1)
{
int ji;
ji=-1;
memset(ss,0,sizeof(ss));
while (c!=0)
{
for (int i=len[f1[c]];i>=1;i--)
{
ji+=1;
ss[ji]=ku[f1[c]][i-1];
}
ji+=1;
ss[ji]=' ';
c-=len[f1[c]];
}
for (int i=ji-1;i>=0;i--)
printf("%c",ss[i]);
printf("\n");
}
if (f[c]==0)
printf("impossible\n");
if (f[c]>=2)
printf("ambiguous\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator