一个组合的问题
从M个数中取N个,也就是彩票的复式选法
如何将其结果打印出来

解决方案 »

  1.   

    如M=6, N=3则这样调用
    var
      ResL: TStrings;
    begin
      ResL := TStringList.create;
      ResL.clear;
      GenCMN(ResL, 6, 3);
      //ResL中存的就是要打印的结果
      .....
    end;
    procedure GenCMN(ResList: TStrings; M, N: integer; const pre: string = '');
    var
        i: integer;
        s: string;begin
        for i := M downto n do
        begin
            if pre = '' then
                s := format('%d', [i])
            else
                s := Format('%s, %d', [pre, i]);        if n = 1 then
                ResList.Add(s)
            else
                GenCMN(ResList, i-1, n-1, s);
        end;end;