for i1:= 1 to 29 do
for i2:=i1+1 to 29 do
for i3:= i2+1 to 29 do
for i4:=i3+1 to 29 do
for i5:=i4+1 to 29 do
for i6:=i5+1 to 29 do
for i7:=i6+1 to 29 do
begin
...
end ;
解决方案 »
- imagelist中的位图格式不一样了
- 新手问题,高手请进
- 关于文件的模糊查找
- 请教一个关于使用Treeview的节点Data出错原因
- 如何改变dbgrid的整行颜色????????????????????????????急!!!!
- 进销存中,仓库名称可以删除吗?一删除不就乱了,库存的,进货单的,转仓单的,都涉及都仓库名称,各位怎么做的?
- vclskin popupmenu in embed form
- “delphi对Excel操作中的画图和存储”的问题,求救。
- 求教 sql 语句
- SendMessage(ScrollBox1.Handle,WM_HSCROLL,SB_THUMBPOSITION,npos);!!!我要急死了!!!
- 一个关于VCL多线程的问题
- RxLib问题。大大送分。
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 m do h:=h*i;
jiechen:=h;
end;
begin
z:=jiechen(n);
t:=jiechen(k)*jiechen(n-k);
zhuhe:=z div t;
end;使用如下:zhuhe(29,7)
还有没有别的办法?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function GetAllChoose(Ret:TStrings):integer; //求出所有的解,存于字符串数组中,返回解的个数
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }function TForm1.GetAllChoose(Ret: TStrings):integer;
var
i,j,k,l,m,n,o:integer;
begin
Ret.Clear;
for i:=1 to 23 do
for j:=i+1 to 24 do
for k:=j+1 to 25 do
for l:=k+1 to 26 do
for m:=l+1 to 27 do
for n:=m+1 to 28 do
for o:=n+1 to 29 do
Ret.Add(Format('%d,%d,%d,%d,%d,%d,%d',[i,j,k,m,l,n,o]));
Result:=Ret.Count;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllChoose(Memo1.Lines);
end;end.
如果不要动态效果,可以先用另一个Strings把结果存起来,再一次放到Memo1.Lines中。
SysUtils;procedure zhuhe(n,k:integer;str:string);
var
i:integer;
begin
if n = k then
begin
for i:=n downto 1 do
str := inttostr(i) + ',' + str;
writeln(str);
exit;
end;
if k = 1 then
begin
for i:=1 to n do
writeln(inttostr(i) + ',' + str);
exit;
end;
zhuhe(n-1,k,str);
zhuhe(n-1,k-1,inttostr(n) + ',' +str);
end;begin
zhuhe(29,7,'');
readln;
end.
SysUtils;procedure zhuhe(n,k:integer;str:string);
var
i:integer;
begin
if n = k then
begin
for i:=n downto 1 do
str := inttostr(i) + ',' + str;
writeln(str);
exit;
end;
if k = 1 then
begin
for i:=1 to n do
writeln(inttostr(i) + ',' + str);
exit;
end;
zhuhe(n-1,k,str);
zhuhe(n-1,k-1,inttostr(n) + ',' +str);
end;begin
zhuhe(29,7,'');
readln;
end.以上程序调试通过