function Collocate(mStrings: TStrings; mStr: string): Boolean; { 全排列 } procedure pCollocate(mLeft, mRight: string); var I, L: Integer; Temp: string; begin L := Length(mLeft); if L = 0 then mStrings.Add(mRight) else for I := 1 to L do begin Temp := mLeft; Delete(Temp, I, 1); pCollocate(Temp, Concat(mRight, mLeft[I])); end; end; begin Result := False; if not Assigned(mStrings) then Exit; mStrings.BeginUpdate; try mStrings.Clear; pCollocate(mStr, ''); finally mStrings.EndUpdate; end; Result := True; end; { Collocate }procedure TForm1.Button1Click(Sender: TObject); begin Collocate(Memo1.Lines, '12345'); end;
to: zswangII(伴水清清)(职业清洁工)太感谢你了!呜呜....... 我自己写了一个下午啊,一下就被你解决了!!!
procedure pCollocate(mLeft, mRight: string);
var
I, L: Integer;
Temp: string;
begin
L := Length(mLeft);
if L = 0 then
mStrings.Add(mRight)
else for I := 1 to L do begin
Temp := mLeft;
Delete(Temp, I, 1);
pCollocate(Temp, Concat(mRight, mLeft[I]));
end;
end;
begin
Result := False;
if not Assigned(mStrings) then Exit;
mStrings.BeginUpdate;
try
mStrings.Clear;
pCollocate(mStr, '');
finally
mStrings.EndUpdate;
end;
Result := True;
end; { Collocate }procedure TForm1.Button1Click(Sender: TObject);
begin
Collocate(Memo1.Lines, '12345');
end;
zswangII(伴水清清)(职业清洁工)太感谢你了!呜呜.......
我自己写了一个下午啊,一下就被你解决了!!!