连发4帖!急救)!不会做,想疯了!做出来叫你爷爷!
pascal吧
全部回复
仅看楼主
level 4
恶魔之痕 楼主
全排列问题(Form.PAS) 【问题描述】 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 【输入格式】 n(1≤n≤9) 【输出格式】 由1~n组成的所有不重复的数字序列,每行一个序列。 【输入样例】Form.in 3 【输出样例】Form.out 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 组合的输出(Compage.PAS) 【问题描述】 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。 现要求你用递归的方法输出所有组合。 例如n=5,r=3,所有组合为: l 2 3 l 2 4 1 2 5 l 3 4 l 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5 【输入】 一行两个自然数n、r(1
2008年08月11日 11点08分 1
level 1
全排列的:
var n:longint;
a:array[1..10] of longint;
f:array[1..10] of boolean;
procedure pl(i:integer);
var j:longint;
begin
if i>n then
begin
for j:=1 to n do
write(a[j],' ');
writeln;
end
else
for j:=1 to n do
begin
if f[j]=false then
begin
a[i]:=j;
f[j]:=true;
pl(i+1);
f[j]:=false;
end;
end;
end;
begin
read(n);
pl(1);
end.
var n:longint;
a:array[1..10] of longint;
f:array[1..10] of boolean;
procedure pl(i:integer);
var j:longint;
begin
if i>n then
begin
for j:=1 to n do
write(a[j],' ');
writeln;
end
else
for j:=1 to n do
begin
if f[j]=false then
begin
a[i]:=j;
f[j]:=true;
pl(i+1);
f[j]:=false;
end;
end;
end;
begin
read(n);
pl(1);
end.
2014年06月30日 08点06分 3
当年不懂事,别翻我帖子T T
2014年06月30日 12点06分
level 11
都是爆搜的吧...
2014年06月30日 09点06分 4
当年不懂事,别翻我帖子T T
2014年06月30日 12点06分
回复 恶魔之痕 :sorry...一时没注意到日期就点进来了.....坟了...>_<
2014年06月30日 12点06分
不一定爆搜,直接像冒泡排序,交换两次输出一次即可
2014年07月02日 23点07分
回复 孙888007 :爆搜≈枚举
2014年07月03日 01点07分
level 9
暴搜?刚学字典序的路过。。。。。
2014年07月02日 14点07分 5
level 6
我不是凑足15字就走来骗经验。
2014年07月03日 19点07分 6
level 15
[吐舌]看见楼主头像我就进来了
2014年07月04日 00点07分 7
level 4
恶魔之痕 楼主
= =你们没有帖子看了吗一定要翻这个帖子!!
好多年的事情了,LZ也好怀念以前的日子= =现在都大学了
2014年07月06日 07点07分 8
level 11
不告诉你,我还不老
2014年07月06日 11点07分 9
1