主题:[讨论]谁能用PASCAL语言,帮我做一下这道题,谢谢
interegg
[专家分:80] 发布于 2006-08-23 08:58:00
[b]排列列举:第一年把五件礼物发给五个孩子,第二年又把同样的五件礼物给发给这五个孩子,而每个孩子的礼品都与上年的不同,请编程找出所有的方案。(请用PASCAL语言,谢谢)[/b]
回复列表 (共20个回复)
11 楼
interegg [专家分:80] 发布于 2006-08-29 16:45:00
晕啊,这么多枚举变量,方法很不好啊
[em15]
12 楼
tongsheng310369 [专家分:30] 发布于 2006-09-14 20:48:00
var
k:array[1..120,1..5]of integer;
i1,i2,i3,i4,i5,j,i,l:integer;
begin
i:=1;
for i1:=1 to 5 do
for i2:=1 to 5 do
if i1<>i2 then
for i3:=1 to 5 do
if (i1<>i3)and(i2<>i3) then
for i4:=1 to 5 do
if (i1<>i4)and(i2<>i4)and(i3<>i4) then
for i5:=1 to 5 do
if (i1<>i5)and(i2<>i5)and(i3<>i5)and(i4<>i5) then
begin
k[i,1]:=i1;
k[i,2]:=i2;
k[i,3]:=i3;
k[i,4]:=i4;
k[i,5]:=i5;
inc(i);
end;
l:=0;
for i:=1 to 120 do
for j:=1 to 120 do
if (k[i,1]<>k[j,1])and(k[i,2]<>k[j,2])and(k[i,3]<>k[j,3])
and(k[i,4]<>k[j,4])and(k[i,5]<>k[j,5]) then
begin
for i1:=1 to 5 do
write(k[i,i1]:2);
write(' ');
for i1:=1 to 5 do
write(k[j,i1]:2);
writeln;
inc(l);
end;
write(l);
end.
13 楼
wyb5699987 [专家分:40] 发布于 2006-09-24 22:55:00
var s[1..6] of integer;
i:integer;
begin
s[1]:=0;
for i:=2 to 5 do
s[i]:=i*s[i-1]+((i+1)mod 2);
writeln(s[5]);
end.
14 楼
wyb5699987 [专家分:40] 发布于 2006-09-25 18:49:00
不好意思,昨天没看好就乱打.
今天改正一下啊
var s:array[1..5] of integer;
i,c;integer;
begin
s[1]:=0;
c:=-1;
for i:=2 to 5 do
begin
c:=c*(-1);
s[i]:=s[i-1]*i+c;
end;
writeln(s[5]);
end.
15 楼
实验小学 [专家分:30] 发布于 2006-09-27 19:54:00
用搜索好不?哈哈!
小题大作.............
16 楼
wangshl888 [专家分:0] 发布于 2006-10-04 15:05:00
初学pascal 加群28276316
17 楼
waglongjuanfeng [专家分:90] 发布于 2006-10-05 01:24:00
1 此题是一典型的伯努力——欧拉装错信封问题:{m个人,m封信,问邮递员全部送错的排列数}
公式 d(M)=M!(1-1/1!+1/2!-1/3!…………+(-1)^M/M!){注:(-1)^M即 -1的M次方}
2 递归公式:d(m)=(m-1)*(d(m-1)+d(m-2))
其中 d(1)=0;d(2)=1;
19 楼
Otis [专家分:0] 发布于 2006-10-08 15:19:00
5*4*3*2*1
20 楼
amyhab [专家分:120] 发布于 2006-10-15 17:02:00
这是错位排列
f(1):=0
f(2):=1
f(n):=(n-1)*[f(n-1)+f(n-2)]{n>2}
[em3]
我来回复