pascal
var a:array[1..10000]of integer;
b:array[1..10000]of boolean;
n:integer;
procedure qpl(m:integer);
var i:integer;
begin
for i:=1 to n do begin
if (b[i]) and (m<n) then begin
b[i]:=false;
a[m 1]:=i;
qpl(m 1);
end
else if m=n then begin
for i:=1 to n do
write(a[i]);
writeln;
end;
end;
b[a[m]]:=true;a[m]:=0;
end;
begin
read(n);
fillchar(b,sizeof(b),true);
fillchar(a,sizeof(a),0);
qpl(0);
end.
为什么会打印n遍?请修改!
解决方法
是打印n遍啊.
要么不打印,打印就是n遍,a[1}~a[n],结束后再换行.
if m=n then begin
for i:=1 to n do
write(a[i]);
writeln;
end;
若要每打一个就换行应该:
if m=n then
for i:=1 to n do
begin
write(a[i]);
writeln;
end;
budui!
怎么不对啊?
procedure qpl(m:integer); 这个过程你自己调用了多次.
for i:=1 to n do begin
......
qpl(m 1);
......
end;
你没有讲清楚哦.
不知你究竟想做啥?
自己再看看吧.
try again