讨论 / 608单词接龙求错误
Panyp 2013-07-20 03:46:00
点我顶贴 收藏 删除
Program ex_608;

Var s:array[1..40]of string;

did:array[1..20]of 0..2;//单词使用次数

c:char;

ans,len:longint;

i,n:integer;

Procedure dfs(x:integer);

var i,j,k:integer;s1:string;lenn:longint;

begin

inc(did[x]);//次数+1

k:=did[x];//备份

lenn:=len;//备份

if len>ans then ans:=len;

for i:=1to n do

if did[i]<2 then

for j:=2to length(s[x]) do

begin

s1:=copy(s[x],j,length(s[x])-j+1);//s1为前一个单词的后段

if pos(s1,s[i])=1 then

begin

len:=len+length(s[i])-length(s1);

dfs(i);

len:=lenn;//复原

did[x]:=k;//复原

end;

end;

end;

Begin

readln(n);

for i:=1to n do readln(s[i]);

readln(c);

ans:=0;

fillchar(did,sizeof(did),0);

for i:=1to n do

if s[i,1]=c then

begin

len:=length(s[i]);

dfs(i);

end;

writeln(ans);

end.

求大牛讲解一下啊,6个点只过了4个

#1 107229HR@2013-07-17 04:57:00
回复 删除
我只有能力解答C++的

RT。。。。

#2 代开启@2013-07-20 03:46:00
回复 删除
用动态规划试试。
查看更多回复
提交回复