共有评论4条
当前显示最后4条评论
|
hackering |
2004/4/27 18:19:29 |
先排序
然后将第一个和第二个比较,如果相等去掉第二个,第一个和新上来的数比较大小
如果第一个和第二个不等,保存第一个数,数组中第一个去掉 |
onvscom |
2004/5/5 10:31:42 |
使用数据库,再用GROUP BY XXX 去掉重复号! |
poliuxijin |
2004/6/7 10:06:14 |
用比较的方法可以实现,不过当数据很多时,程序的运行效率很低
而且如果不是7为而是更多的位数,怎么才能快速的得到所有的组合呢? |
qdwind |
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; |
我要发表评论 |
查看全部评论 |
|