主题:pascal全排列问题,谢谢,答对者50分
wangzhongqi96
[专家分:40] 发布于 2009-04-03 21:30:00
输出从一到n,这n个数字的全排列,谢谢
回复列表 (共4个回复)
沙发
woshizhu [专家分:30] 发布于 2009-04-15 21:01:00
Program quanpailie;
var n,i;integer;
begin
readln(n);
for i:=1 to n do
write(i:5);
end.
板凳
szc123 [专家分:80] 发布于 2009-04-16 21:35:00
program p;
type arr1=array[1..100] of integer;
var n:integer; a:arr1; i,j,f:integer; nn:longint;
begin
read (n);
i:=1;
while i>0 do begin
a[i]:=a[i]+1;
if a[i]>n then begin
a[i]:=0;
i:=i-1;
end else begin
f:=1;
for j:=1 to i-1 do begin
if a[j]=a[i] then begin
f:=0;
break;
end;
end;
if f=1 then begin
if i=n then begin
for j:=1 to n do begin
write (a[j]);
end;
writeln;
nn:=nn+1;
end else begin
i:=i+1;
end;
end;
end;
end;
writeln (nn);
end.
全排列的所有结果都会输出
如:
输入3
输出
123
132
213
231
312
321
6 '共有六种
3 楼
hxy_anhui [专家分:320] 发布于 2009-05-23 10:49:00
label 10;
var n,i,j,s,k:longint;
a:array[1..10000] of longint;
procedure hxy(i:longint);
begin
for j:=i to n do
a[i]:=j;
for k:=1 to i-1 do
if a[i]=a[j] then goto 10;
if i<n then begin
hxy(i+1);
end
else begin
s:=s+1;
for j:=1 to n do
write(a[j],' ');
writeln;
end;
10:end;
begin
readln(n);
hxy(1);
writeln(s);
end.
4 楼
DYF213 [专家分:90] 发布于 2009-05-30 07:16:00
用递归,很快
我来回复