| ||||||||||
| 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<cstring>
using namespace std;
int i,j,k,n,m,q,r[1000],f[11][300][300],a[11][11],d[11][300];
char s[11][101];
int main()
{
r[1]=1;r[2]=2;r[4]=3;r[8]=4;r[16]=5;r[32]=6;
r[64]=7;r[128]=8;r[256]=9;r[512]=10;
while(scanf("%d",&n),n>0)
{
memset(d,0,sizeof(d));
for (i=1;i<=(1<<n)-1;i++)
{
j=i;
m=0;
while (j!=0)
{
j-=j&(-j);
m++;
}
d[m][0]++;
d[m][d[m][0]]=i;
}
getchar();
for (i=1;i<=n;i++)
scanf("%s",s[i]);
memset(a,0,sizeof(a));
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j)
for (k=0;k<strlen(s[i]);k++)
{
m=0;
for (q=0;q<(strlen(s[j]),strlen(s[i])-k);q++)
if (s[i][k+q]==s[j][q])
m++;
a[i][j]=max(m,a[i][j]);
}
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=max(a[i][j],a[j][i]);
memset(f,0,sizeof(f));
for (i=2;i<=n;i++)
{
for (j=1;j<=d[i][0];j++)
for (k=1;k<=d[i-1][0];k++)
if ((d[i][j]|d[i-1][k])==d[i][j])
{
if (i==2)
f[i][j][k]=a[r[d[i][j]^d[i-1][k]]][r[d[i-1][k]]];
for (q=1;q<=d[i-2][0];q++)
if ((d[i-1][k]|d[i-2][q])==d[i-1][k])
f[i][j][k]=max(f[i][j][k],f[i-1][k][q]+a[r[d[i][j]^d[i-1][k]]][r[d[i-1][k]^d[i-2][q]]]);
}
}
m=0;
for (i=1;i<=d[n-1][0];i++)
if (f[n][1][i]>m)
m=f[n][1][i];
printf("%d\n",m);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator