讨论 / 为什么这儿AC了但微基上得零分
GUA 2013-10-09 07:14:00
点我顶贴 收藏 删除
#include<cstdio>

#include<cstdlib>

#include<algorithm>

using namespace std;

int n,t[100],ans;

char st,s[100][100];

void readdata()

{

scanf("%d",&n);

for(int i=1;i<=n;i++) scanf("%s",s[i]);

scanf("%c",&st);

scanf("%c",&st);

for(int i=1;i<=n;i++)t[i]=2;

// for(int i=n+1;i<=n*2;i++) s[i]=s[i-n];

}

int check(int q,int w)

{

int x=strlen(s[q]),y=strlen(s[w]);

int ok=1;

for(int i=x-1;i>0;i--)

{

ok=1;

for(int j=i;j<x;j++)

{

if(s[q][j]==s[w][j-i]&&j-i<y-1) continue;

ok=0;

}

if(ok==1) return i;

}

return 0;

}

void dfs(int k,int l)

{

int x;

ans=max(ans,l);

for(int i=1;i<=n;i++)

{

x=check(k,i);

if(t[i]>0&&x>0) {t[i]--;dfs(i,strlen(s[i])-strlen(s[k])+l+x);t[i]++;}

}

}

void work()

{

for(int i=1;i<=n;i++) if(s[i][0]==st){t[i]--;dfs(i,strlen(s[i]));t[i]++;}

printf("%d",ans);

}

int main()

{

readdata();

work();

return 0;

}

查看更多回复
提交回复