主题:全排列的解法
Wang--Xiang
[专家分:20] 发布于 2007-11-06 11:02:00
求全排列的解法[em16]
(本人虽已知道一种,可它利用了GOTO语句,NOIP不给用)
回复列表 (共2个回复)
沙发
游侠UFO [专家分:1200] 发布于 2007-11-06 16:30:00
procedure arrange(n:integer);
var
num:array[0..n] of integer;
i,x,y:byte;
begin
num[0]:=0;
for i:=1 to n do
begin
num[i]:=i;
write(num[i],' ');
end;
writeln;
repeat
for i:=1 to n do
if num[i]>num[i-1] then x:=i;
for i:=x to n do
if num[i]>num[x-1] then y:=i;
if x>1 then
begin
swap(num[x-1],num[y]);
inverse(x); //对num[x]~num[n]作逆序处理
for i:=1 to n do write(num[i],' '); //输出当前序列
writeln;
end;
until x=1;
end;
板凳
shisutianxia [专家分:630] 发布于 2007-11-08 11:00:00
我的BLOG里有算法,回溯和递归,递归更简单,你去看看
http://hi.baidu.com/649786031/blog
我来回复