首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于Delphi求组合的有关问题

2013-06-26 
关于Delphi求组合的问题假定我通过Mome1输入求组合的数字,形式为:01,02,03,04,05(有可能不止五个,个数没有

关于Delphi求组合的问题
假定我通过Mome1输入求组合的数字,形式为:01,02,03,04,05(有可能不止五个,个数没有固定和统一的。)
按下Button1能把输入的组合出来每三个为一组合,显示形式为:
01-02-03; 01-02-04; 01-02-05; 01-03-04; 01-03-05; 
01-04-05; 02-03-04; 02-03-05; 02-04-05; 03-04-05


delphi代码如何实现?谢谢! 
[解决办法]
说了参考http://bbs.csdn.net/topics/401579,稍微修改下就是了,输出在memo里

procedure TForm1.btn1Click(Sender: TObject);
begin
  mmo1.Text := ZsList('abcd')
end;


function TForm1.ZsList(mStr: string): string; { 全排列 }

   procedure pZsList(P : Integer;mLeft, mRight: string);
   var
     I, L: Integer;
     Temp: string;
   begin
     L := Length(mLeft);
     if L = Length(mStr)-3  then
       Result := Result + mRight + #13#10
     else for I := P to L do begin
       Temp := mLeft;
       Delete(Temp, I, 1);
       pZsList(I,Temp, Concat(mRight, mLeft[I]));
     end;
   end; { [ZsList<pZsList>] }

 begin
   Result := '';
   pZsList(1,mStr, '');
 end; { ZsList }


[解决办法]
var
  I, J, K,l: Integer;
  s:string;
begin
  l:=0;
  memo2.Lines.Clear;
  for I := 0 to memo1.Lines.Count - 1 do
  begin
    for J := I + 1 to memo1.Lines.Count - 1 do
    begin
      for K := J + 1 to memo1.Lines.Count - 1 do


      begin
        Inc(l);
        s:=s+memo1.Lines[I]+'-' +memo1.Lines[j]+'-' +memo1.Lines[k]+'   ';
        if l>3 then
        begin
        memo2.Lines.Add(s);
        l:=0;
        s:='';
        end;
      end;
    end;
  end;
end;


[解决办法]
关于Delphi求组合的有关问题
[解决办法]
 

热点排行