用回溯法可以全部列出来,35选7,总共有35!/(7!*28!)=6724520种组合下面以10万个组合生成一个文件,总共生成了68个文件,大概需要30分钟才能列出所有组合var a:array[0..100] of integer; g_Count:Integer=1; n:integer=35; r:integer=7;//M1:TMemo;procedure TForm1.HS(t: integer);var i:Integer; s:string;begin if t>r then begin for i:=1 to r do s:=s+IntToStr(a)+' '; M1.Lines.Add(s); Application.ProcessMessages; if M1.Lines.Count>=100000 then begin M1.Lines.SaveToFile(inttostr(g_Count)+'.txt'); M1.Clear; inc(g_Count) end; end else begin for i:=1 to n do begin a[t]:=i; if (a[t-1]<a[t]) then HS(t+1); end; end;end;procedure TForm1.Button1Click(Sender: TObject);begin //a[0]:=n+1; M1.Clear; HS(1); if M1.Lines.Count>0 then begin M1.Lines.SaveToFile(inttostr(g_Count)+'.txt'); M1.Clear; inc(g_Count) end;end;