组合的算法 (50分)

间谍

Unregistered / Unconfirmed
GUEST, unregistred user!
SOS,SOS....,各位大虾们救救急.[:(]
求1至9之间7位数的各种组合
 
给你一个求组合的通用函数:
Function zhuhe(n,k:integer):integer;
var z,t:integer;
Function jiechen(m:integer):integer;
var i,h:integer;
begin
h:=1;
for i:=1 to mdo
h:=h*i;
jiechen:=h;
end;
begin
z:=jiechen(n);
t:=jiechen(k)*jiechen(n-k);
zhuhe:=z div t;
end;

使用如下:zhuhe(9,7)
 
另外有个疑问:1~9之间好像没有七位数?只有个位数!
呵呵!
 

如果不考虑通用性,从9个数字中取7个数字相当于 从9个数中取2个数字再扣除
用2重循环 (i from 9 to 1 )
(j from 9 to 1 and (j <> i)
得到 i, j 是两个数字的组合,扣掉它们,剩下的就是7个数字的组合
 
急,急,急....[:(]
从1至33之间任意选择N个数,做出它们七位数的各种组合排列.
注:1.组合排列为7个数.
2.组合排列中7个数之间是不分次序的.
3.N个数是在7至16个数之间.
例:1,2,3,4,5,6,7
则组合为1234567,且只有一个.
谢谢各位大虾指教
 
呵呵!你是不是在做模拟彩票啊!
var
Form1: TForm1;
num:array[0..7] of integer;
qq:array[1..7] of integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
label 10;
var
i,j,k,t:integer;
begin
randomize;
for i:=1 to 7do
begin
10: num:=random(33)+1;
qq:=num;
for j:=1 to ido
if qq=num[i-j] then
goto 10;
end;
for j:=1 to 6do
for k:=1 to 7-jdo
if num[k+1]<num[k] then
begin
t:=num[k];num[k]:=num[k+1];num[k+1]:=t;
end;
label1.caption:=inttostr(num[1]);
label2.caption:=inttostr(num[2]);
label3.caption:=inttostr(num[3]);
label4.caption:=inttostr(num[4]);
label5.caption:=inttostr(num[5]);
label6.caption:=inttostr(num[6]);
label7.caption:=inttostr(num[7]);
end;
 
间谍
我给你把这个问题结束了
 
顶部