关于字符串组合(100)

  • 主题发起人 主题发起人 pyk1
  • 开始时间 开始时间
P

pyk1

Unregistered / Unconfirmed
GUEST, unregistred user!
在Tstringlist中,有如下字符串,不固定,有时候是一行,有时候是两行或三行或更多行。ABCDEGH如何能组合成:ADG,ADH,AEG,AEH,BDG,BDH,BEG,BEH,CDG,CDH,CEG,CEH谢谢
 
这个题目还是有点难度,先占个位置,晚一点我再给出我的算法
 
to:wangdonghai谢谢了。
 
可以看成递归问题
 
...implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var i,j,iRow,iCount,iC,k,m,n:Integer; s,s1:string; A:array of array of char; ALen:array of Integer;begin Memo2.Clear; { Memo1.Clear; Memo1.Lines.Add('ABC'); Memo1.Lines.Add('DE'); Memo1.Lines.Add('GH'); } iRow:=Memo1.Lines.Count; if iRow=1 then begin Memo2.Lines.Add(Memo1.Lines[0]); exit; end; SetLength(ALen,iRow); iCount:=1; for i:=0 to iRow-1 do begin ALen:=length(Memo1.Lines); iCount:=iCount*ALen; end; SetLength(A,iCount,iRow); for i:=0 to iRow-1 do begin s:=Memo1.Lines; iC:=1; for k:=i+1 to iRow-1 do iC:=iC*ALen[k]; n:=iCount div (iC*ALen); s1:=''; for j:=1 to n do for k:=1 to length(s) do for m:=0 to iC-1 do s1:=s1+s[k]; for k:=1 to length(s1) do A[k-1]:=s1[k]; end; for i:=0 to iCount-1 do begin s:=''; for j:=0 to iRow-1 do s:=s+A[j]+' '; Memo2.Lines.Add(s); end; SetLength(ALen,0); for i:=0 to iRow-1 do SetLength(A,i,0); SetLength(A,0);end;
 
毛的递归、st: TStringList;for i := 1 to Length(S1) do for j := 1 to Length(S2) do for k := 1 to Length(S3) do st.add(S1+S2[j]+S3[k])
 
真正的牛人,佩服。
 
后退
顶部