本文主要是介绍codeves天梯 单词接龙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。
分析:就是一道练习搜索熟练度的题==。
varv:array[1..20] of longint;s:array[1..20,1..20] of longint;a:array[1..20] of string;n,ans:longint;m:string;procedure init; vari:longint; beginreadln(n);for i:=1 to n doreadln(a[i]);readln(m);end;procedure print; beginwrite(ans); end;procedure hehe; vari,j,k,l,o,p:longint; beginfor i:=1 to n dofor j:=1 to n dobegink:=length(a[i]);o:=1;p:=k;for l:=1 to k doif copy(a[j],1,o)=copy(a[i],p,k) thenbegins[j,i]:=o;break;endelsebegininc(o);dec(p);if o>k then break;end;end; end;procedure dep(x,l:longint); vari:longint; beginif x>ans then ans:=x;for i:=1 to n doif (s[i,l]>0) and (v[i]<2) thenbegininc(v[i]);dep(x+length(a[i])-s[i,l],i);dec(v[i]);end; end;procedure hehehe; vari:longint; beginfor i:=1 to n doif a[i][1]=m thenbegininc(v[i]);dep(length(a[i]),i);dec(v[i]);end; end;begininit;hehe;hehehe;print; end.
这篇关于codeves天梯 单词接龙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!