如何列举出 1....9 所有的排列组合?只求思路!谢谢!
解决方案 »
- File not found: 'lxpTrayIcon.dcu'
- 谁有空的,帮忙写一个小程序!
- Delphi6 写的Webservice 返回record数组的问题,请求帮助?
- 怎么控制TWebBrowser,tfrPreview中的滚动条!
- 程序退出后在任务栏中留下一个空格,点一下才消失
- 关于sql查询语句
- 怎样将用户对数据库的操作记录下来,到用户点击保存时才修改数据库
- 我Delphi6为什么有时候输入一个控件名字再加“.”时,后面不出现下拉框?
- list index out of bounds(12) 是个什么类型的错误?
- 想换工作的报个到,今年的工作好换吗?
- 为什么找不到*.dcu文件
- 一个关于浏览图片的简单问题(50分)
9取2用
for i:=1 to 9 do
Begin
for j:=i+1 to 9 do
Begin
//put your code here
showmessage(inttostr(i)+','+inttostr(j));
End;
End;
begin
writeln(i);
end;
const nMax=9;
var
Form1: TForm1;
outres:array[1..nMax] of char;
bused:array[1..nMax] of boolean;
temp:integer;
implementation{$R *.dfm}procedure test(m,n:integer);
var
i:integer;
begin
if m=nMax+1 then//已经得到一个完整组合,如果等于m=k,表示结果是k字排列
begin
form1.edit1.text:=string(outres);
form1.Edit1.Refresh;
application.ProcessMessages;
end
// showmessage(outres)
else
for i:=1 to nMax do
begin
if not bUsed[i] then//选一个可用的数
begin
outres[m]:=chr(i+48);
bUsed[i]:=true;//标明已经用过
test(m+1,i);
bUsed[i]:=false;//前个位置的数要被更换,该数可用,如第一组数为12,当前为位置2,当为位置2以后选数时,2不可用,但位置1的数要改变时,2可用。
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
begin
outres[9]:=#0;
for temp:=1 to 9 do bused[temp]:=false;
test(1,1);
end;
var
i:integer;
begin
if m=n+1 then//表示结果是n字排列//////////////////////
begin
form1.edit1.text:=string(outres);
form1.Edit1.Refresh;
application.ProcessMessages;
end
else
for i:=1 to nMax do
begin
if not bUsed[i] then
begin
outres[m]:=chr(i+48);
bUsed[i]:=true;
test(m+1,n);
bUsed[i]:=false;
end;
end;
end;
var
i:integer;
begin
if m=n+1 then //表示结果是n字排列////
begin
form1.edit1.text:=string(outres);
form1.Edit1.Refresh;
application.ProcessMessages;
end
else
for i:=1 to nMax do
begin
if not bUsed[i] then
begin
outres[m]:=chr(i+48);
bUsed[i]:=true;
test(m+1,n);
bUsed[i]:=false;
end;
end;
end;有问题的