菜鸟需要帮助,关于英语单词接龙的编程,可以使用c/c#/c++回答

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:23:40
任意给定一组单词,假设有N个,如下:
acm mouse eat reap teacher

如果这些单词能够首尾连接(单词顺序可以是任意的,不一定是顺序),

并且输出连接好以后的顺序,如果不能把所有单词连接起来就输出fail!

例如上面的例子可以输出success! 因为

acm->mouse->eat->teacher->reap 所以可以连接起来
代码能够实现的,立刻给分,本人在线等
并且给出一定的思路,和注释,高手们快来吧

只有pascal,c++有些不会
var
words:array[1..41] of string;
n,max:integer;
map:array[1..41,1..41] of integer;
x:array[1..41] of integer;
y:array[1..41] of boolean;
function xlen(a,b:string):integer;
var i,k:integer;
begin
if length(a)>length(b) then k:=length(b) else k:=length(a);
for i:=1 to k-1 do
if copy(a,length(a)-i+1,i)=copy(b,1,i) then exit(i);
exit(0);
end;
procedure init;
var i,j:integer;
st:string;
begin
readln(n);j:=1;
for i:=1 to n do
begin
readln(st);
inc(j);words[j]:=st;inc(j);words[j]:=st;
end;
readln(st);words[1]:='1'+st;
n:=2*n+1;
fillchar(map,sizeof(map),0);
for i:=1 to n do
for j:=1 to n do
map[i,j]:=xlen(words[i],words[j]);
end;
procedure outit(m:integer);
var i,s:integer;
begin
s:=length(words[1]);<