捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:一个彩票号码组合筛选
qdwind 9451 2004/11/16 0:10:40
  public
    counter:integer;


function GetNFromM(M,N,ParentNum,MyStep:integer;str:string;memo:tmemo):Boolean;
var i:integer;
begin
   MyStep:=MyStep+1;
   for i:=ParentNum+1 to M-N+MyStep do
      if MyStep=n then memo.Lines.Add (str+','+inttostr(i))
        else GetNFromM(M,N,i,MyStep,str+','+inttostr(i),form1.memo1);
end;

function CountNFromM(M,N,ParentNum,MyStep:integer):Boolean;
var i:integer;
begin
   MyStep:=MyStep+1;
   for i:=ParentNum+1 to M-N+MyStep do
      if MyStep=n then form1.Counter:=form1.Counter+1
        else CountNFromM(M,N,i,MyStep);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetNFromM(10,3,0,0,',memo1); //得到10选3的所有组合
  CountNFromM(36,7,0,0);        //得到36选7的总注数
  edit1.Text :=inttostr(form1.counter);
end;
poliuxijin 5759 2004/6/7 10:06:14
用比较的方法可以实现,不过当数据很多时,程序的运行效率很低

而且如果不是7为而是更多的位数,怎么才能快速的得到所有的组合呢?
onvscom 4604 2004/5/5 10:31:42
使用数据库,再用GROUP BY XXX 去掉重复号!
hackering 4367 2004/4/27 18:19:29
先排序

然后将第一个和第二个比较,如果相等去掉第二个,第一个和新上来的数比较大小

如果第一个和第二个不等,保存第一个数,数组中第一个去掉
第一页 上一页 下一页 最后页 有 4 条纪录 共1页 1 - 4
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表