总共是9个数字 得到他们的所有排列
这样的
1,2,3,4,5,6,7,8,9,
得到的结果是
1,2,3
4,5,6
7,8,9
4,5,9
5,8,9
。。
。。
这样的个结果,

解决方案 »

  1.   

    给你发个组合的函数//组合函数,调用例子: Combine('123456789', memo1.Lines, 3);
    // procedure Combine(CSet: string; sl: TStrings; Num: Integer); unit Comb;interfaceuses Classes;procedure Combine(CSet: string; sl: TStrings; Num: Integer);implementationvar
      n, r: Integer;                       // n - 字符集数目  r - 取出的数目
      c: array[0..10] of Integer;
      used: array[0..10] of Integer;procedure Combine_1(ss: string; sl: TStrings; p, h: Integer);
    var
      i: Integer;
      s: string;
    begin
      if p = r then begin
        s := '';
        for i := 0 to r - 1 do s := s + ss[c[i] + 1];
        sl.Add(s);
        Exit;
      end;  for i := h to n - r + p do
        if Used[i] = 0 then begin
          c[p] := i;
          Inc(used[i]);
          Combine_1(ss, sl, p + 1, i + 1);
          Dec(used[i]);
        end;
    end;procedure Combine(CSet: string; sl: TStrings; Num: Integer);
    var
      i: Integer;
    begin
      for i := 0 to 10 do used[i] := 0;
      n := Length(CSet);
      r := Num;
      Combine_1(CSet, sl, 0, 0);
    end;end.