求组合通用算法,200分送上(200)

  • 主题发起人 主题发起人 Defo_XYF
  • 开始时间 开始时间
D

Defo_XYF

Unregistered / Unconfirmed
GUEST, unregistred user!
类似福彩的35选7的选号方法。如: 1 2 3 4 5 6 7 1 2 3 4 5 6 8 1 2 3 4 5 6 9 。。。。。 。。。。。。
 
什么意思啊? 就是申请个字符数组不就搞定了? 把10以下的都归位01 --09如果说中奖的情况: 加成一个字符串 010203101114 这样你只要pos语句就可以实现。
 
是不是想知道37选7一共有多少种组合方式?35*34*33*32*31*30*29 = 33891580800数字太大,用现在的计算机把所有情况都列出来,估计不大可能。
 
http://1zwwz.mygrep.com/show.php?mod=article&id=1888
 
用回溯法可以全部列出来,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;
 
问题已解决
 
多人接受答案了。
 
后退
顶部