高分求一个过河的问题的算法

ywang 2002-04-22 08:46:59
题意大致如此:从上河岸的任意一点(A_E)踩着河里的木桩到达下河岸的任意一点(P_T)。
要求1:路线必须是 上河岸的一点 -〉一排一点 -〉 二排一点 -〉 三排一点 -〉下河岸的一点
要求2:河中的木排数由计算机输入(也就是说:木排数不是固定的)
结果:列出所有的过河轨迹(例如:AFIMP,BFIMQ.....)

A B C D E (上河岸)
----------------------------------------
F G H ------第一排木桩

I J K L ------第二排木桩

M N O ------第三排木桩
----------------------------------------
P Q R S T (下河岸)
...全文
44 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywang 2002-04-22
  • 打赏
  • 举报
回复
输入:
ABCDE 5
FGH 3
IJKL 4
MNO 3
PQRST 5
输出:所有组合(例如:A_F_I_M_P, B_F_K_O_S, ........ 等)
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
给个输入,输出范例
ywang 2002-04-22
  • 打赏
  • 举报
回复
有关,由电脑输入每排木桩的个数和相应木桩的代表码
professorzhou 2002-04-22
  • 打赏
  • 举报
回复
跟木桩的位子有关吗?
ywang 2002-04-22
  • 打赏
  • 举报
回复
没人会吗
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
理解思路就可以了,余下的只是调试代码
如果还有问题就给我发短消息
给一个标准的输入、输出范例
我会再与你交流交流
ywang 2002-04-22
  • 打赏
  • 举报
回复
算法真的不错,理解了,多谢

可以将array of string 替换成 array of arrstring (其中type arrstring=array of string)吗?

现在在想p(['ACDE', 'AGHI','AA'], Memo1.Lines) 可不可以替换成
p([['AC','BE','GF'],['AG','HI'],['AB','CH']], Memo1.Lines)?

我再试试,给分
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
No.1 做一个替换

No.2 用array of TStrings处理

//算法就是这样,你理解没有?
ywang 2002-04-22
  • 打赏
  • 举报
回复
p(['ACDE', 'AGHI','AA'], Memo1.Lines) 好像有问题

还有就是如果我的木桩标识不是一个字母,而是多个字母,干怎么办,请教!
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
算法如上,具体的输入,输出你自己调整
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
procedure p(mArr: array of string; mStrings: TStrings);
var
I, J: Integer;
T: string;
S: string;
begin
mStrings.Clear;
T := '';
for I := Low(mArr) to High(mArr) do
if mArr[I] <> '' then begin
T := T + mArr[I][1];
S := S + mArr[I][Length(mArr[I])];
end else Exit;
while T <> S do begin
mStrings.Add(T);
J := Length(S);
for I := High(mArr) downto Low(mArr) do begin
if Pos(T[J], mArr[I]) >= Length(mArr[I]) then
T[J] := mArr[I][1]
else begin
T[J] := mArr[I][Pos(T[J], mArr[I]) + 1];
Break;
end;
Dec(J);
end;
// if mStrings.Count > 100 then Exit;//调试时避免出现死循环
end;
mStrings.Add(S);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
p(['ACDE', 'FGH', 'IJKL', 'MNO', 'PQRST'], Memo1.Lines)
end;
王集鹄 2002-04-22
  • 打赏
  • 举报
回复
AFIMP
AFIMQ
AFIMR
AFIMS
//....
DGIOP
DGIOQ
DGIOR
DGIOS
DGIOT
DGJMP
DGJMQ
DGJMR
DGJMS
DGJMT
DGJNP
DGJNQ
DGJNR
DGJNS
DGJNT
DGJOP
DGJOQ
DGJOR
//....
EHLMT
EHLNP
EHLNQ
EHLNR
EHLNS
EHLNT
EHLOP
EHLOQ
EHLOR
EHLOS
EHLOT

5,913

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧