pascal排列组合教程
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/28 23:25:23
pascal排列组合教程
把基础的原理说清楚,看得明白就可以
把基础的原理说清楚,看得明白就可以
排列与组合
3.1加法原理与乘法原理
1.加法原理:
做一件事情,完成它可以有n类办法,在第一类办法中有m1 种不同的方法,在第二类办法中有 m2种不同的方法,……,在第n类办法中有 mn种不同的方法.那么完成这件事共有 N= m1+m2+...+mn 种不同的方法.
2.乘法原理:
做一件事情,完成它需要分成n个步骤,做第一步有m1 种不同的方法,做第二步有 m2种不同的方法,……,做第n步有 种mn不同的方法,那么完成这件事有 N=m1*m2*...*mn 种不同的方法.
3.两个原理的区别:一个与分类有关,一个与分步有关;加法原理是“分类完成”,乘法原理是“分步完成”.
练习:
1.由数字1,2,3,4,5可以组成多少个三位数(各位上的数字允许重复)?
② 2.由数字0、1,2,3,4,5可以组成多少个三位数(各位上的数字允许重复)?
③ 3.由数字0,1,2,3,4,5可以组成多少个十位数字大于个位数字的两位数?
例 4. 一个三位密码锁,各位上数字由0,1,2,3,4,5,6,7,8,9十个数字组成,可以设置多少种三位数的密码(各位上的数字允许重复)?首位数字不为0的密码数是多少种?首位数字是0的密码数又是多少种?
5.如图,要给地图A、B、C、D四个区域分别涂上3种不同颜色中的某一种,允许同一种颜色使用多次,但相邻区域必须涂不同的颜色,不同的涂色方案有多少种?
6.某班有22名女生,23名男生.
① 选一位学生代表班级去领奖,有几种不同选法?
② 选出男学生与女学生各一名去参加智力竞赛,有几种不同的选法?
7.105有多少个约数?并将这些约数写出来.
8.从5幅不同的国画、2幅不同的油画、7幅不同的水彩画中选不同画种的两幅画布置房间,有几种选法?
9.若x、y可以取1,2,3,4,5中的任一个,则点(x,y)的不同个数有多少?
10.一个口袋内装有5个小球另一个口袋内装有4个小球,所有这些小球的颜色各不相同① 从两个口袋内任取一个小球,有 种不同的取法;
11.从两个口袋内各取一个小球,有 种不同的取法.
12.乘积(a1+a2+a3)(b1+b2+b3+b4)(c1+c2+c3+c4+c5)展开共有 个项.
13.有四位考生安排在5个考场参加考试.有 种不同的安排方法.
(答案:125;180;15;1000,900,100;6;45,506;8;59;25;9;20;60;625)
3. 2 排列与组合的概念与计算公式
1.排列及计算公式
从n个不同元素中,任取m(m≤n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 p(n,m)表示.
p(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!(规定0!=1).
2.组合及计算公式
从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号
c(n,m) 表示.
c(n,m)=p(n,m)/m!=n!/((n-m)!*m!);c(n,m)=c(n,n-m);
3.其他排列与组合公式
从n个元素中取出r个元素的循环排列数=p(n,r)/r=n!/r(n-r)!.
n个元素被分成k类,每类的个数分别是n1,n2,...nk这n个元素的全排列数为
n!/(n1!*n2!*...*nk!).
k类元素,每类的个数无限,从中取出m个元素的组合数为c(m+k-1,m).
练习:
1.(1)用0,1,2,3,4组合多少无重复数字的四位数?(96)
(2)这四位数中能被4整除的数有多少个?(30)
(3)这四位数中能被3整除的数有多少个?(36)
2.用0,1,2,3,4五个数字组成无重复数字的五位数从小到大依次排列.
(1) 第49个数是多少?(30124)
(2) 23140是第几个数?(40)
3.求下列不同的排法种数:
(1) 6男2女排成一排,2女相邻;(p(7,7)*p(2,2))
(2) 6男2女排成一排,2女不能相邻;(p(6,6)*p(7,2))
(3) 5男3女排成一排,3女都不能相邻;(p(5.5)*p(6,3))
(4) 4男4女排成一排,同性者相邻;(p(4,4)*p(4,4)*p(2,2))
(5) 4男4女排成一排,同性者不能相邻.(p(4,4)*p(4,4)*p(2,2))
4.有四位医生、六位护士、五所学校.
(1) 若要选派三位医生到五所学校之中的三所学校举办健康教育讲座,每所学校去一位医生有多少种不同的选派方法?(c(5,3)*p(4,3))
(2) 在医生或护士中任选五人,派到五所学校进行健康情况调查,每校去且仅去一人,有多少种不同的选派方法?(p(10,5))
(3) 组成三个体检小组,每组一名医生、两名护士,到五所学校中的三所学校为老师体检,有多少种不同的选派方法?(c(5,3)*p(4,3)*c(6,2)*c(4,2)*c(2,2))
5.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上.问用这些点为顶点,能组成多少个不同四边形?(2250)
6.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上.问用这些点为顶点,能组成多少个不同三角形?(751)
7.将N个红球和M个黄球排成一行.例如:N=2,M=2可得到以下6种排法:
红红黄黄 红黄红黄 红黄黄红 黄红红黄 黄红黄红 黄黄红红
问题:当N=4,M=3时有多少种不同排法?(不用列出每种排法)(35)
8.用20个不同颜色的念珠穿成一条项链,能做多少个不同的项链.(20!/20)
9.在单词MISSISSIPPI 中字母的排列数是(11!/(1!*4!*4!*2!)
10.求取自1,2,...k的长为r的非减序列的个数为(c(r+k-1,r))
3.3排列与组合的产生算法
1.排列的产生
方法1:(递归,深度优先产生)
程序如下:
program pailei;
const m=4;
var a:array[1..m] of integer ;
b:array[1..m] of boolean;
procedure print;
var i:integer;
begin
for i:=1 to m do
write(a[i]);
writeln;
end;
procedure try(dep:integer);
var i:integer;
begin
for i:=1 to m do
if b[i] then
begin
a[dep]:=i; b[i]:=false;
if dep=m then print else try(dep+1);
b[i]:=true;
end;
end;
begin
fillchar(b,sizeof(b),true);
try(1);
end.
方法2.根据上一个排列产生下一个排列.
程序如下:
program pailei;
const m=5;
var a:array[1..m] of integer ;
i,j,temp,k,l:integer;
procedure print;
var i:integer;
begin
for i:=1 to m do
write(a[i]);
writeln;
end;
begin
for i:=1 to m do a[i]:=i;
repeat
print;
i:=m-1;
while (i>0) and (a[i]>a[i+1]) do i:=i-1;
if i>0 then
begin
j:=m;
while a[j]0 then
begin
a[i]:=a[i]+1;
for j:=i+1 to m do a[j]:=a[j-1]+1;
end;
until i=0;
end.
练习:
1.已知n(1
3.1加法原理与乘法原理
1.加法原理:
做一件事情,完成它可以有n类办法,在第一类办法中有m1 种不同的方法,在第二类办法中有 m2种不同的方法,……,在第n类办法中有 mn种不同的方法.那么完成这件事共有 N= m1+m2+...+mn 种不同的方法.
2.乘法原理:
做一件事情,完成它需要分成n个步骤,做第一步有m1 种不同的方法,做第二步有 m2种不同的方法,……,做第n步有 种mn不同的方法,那么完成这件事有 N=m1*m2*...*mn 种不同的方法.
3.两个原理的区别:一个与分类有关,一个与分步有关;加法原理是“分类完成”,乘法原理是“分步完成”.
练习:
1.由数字1,2,3,4,5可以组成多少个三位数(各位上的数字允许重复)?
② 2.由数字0、1,2,3,4,5可以组成多少个三位数(各位上的数字允许重复)?
③ 3.由数字0,1,2,3,4,5可以组成多少个十位数字大于个位数字的两位数?
例 4. 一个三位密码锁,各位上数字由0,1,2,3,4,5,6,7,8,9十个数字组成,可以设置多少种三位数的密码(各位上的数字允许重复)?首位数字不为0的密码数是多少种?首位数字是0的密码数又是多少种?
5.如图,要给地图A、B、C、D四个区域分别涂上3种不同颜色中的某一种,允许同一种颜色使用多次,但相邻区域必须涂不同的颜色,不同的涂色方案有多少种?
6.某班有22名女生,23名男生.
① 选一位学生代表班级去领奖,有几种不同选法?
② 选出男学生与女学生各一名去参加智力竞赛,有几种不同的选法?
7.105有多少个约数?并将这些约数写出来.
8.从5幅不同的国画、2幅不同的油画、7幅不同的水彩画中选不同画种的两幅画布置房间,有几种选法?
9.若x、y可以取1,2,3,4,5中的任一个,则点(x,y)的不同个数有多少?
10.一个口袋内装有5个小球另一个口袋内装有4个小球,所有这些小球的颜色各不相同① 从两个口袋内任取一个小球,有 种不同的取法;
11.从两个口袋内各取一个小球,有 种不同的取法.
12.乘积(a1+a2+a3)(b1+b2+b3+b4)(c1+c2+c3+c4+c5)展开共有 个项.
13.有四位考生安排在5个考场参加考试.有 种不同的安排方法.
(答案:125;180;15;1000,900,100;6;45,506;8;59;25;9;20;60;625)
3. 2 排列与组合的概念与计算公式
1.排列及计算公式
从n个不同元素中,任取m(m≤n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 p(n,m)表示.
p(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!(规定0!=1).
2.组合及计算公式
从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号
c(n,m) 表示.
c(n,m)=p(n,m)/m!=n!/((n-m)!*m!);c(n,m)=c(n,n-m);
3.其他排列与组合公式
从n个元素中取出r个元素的循环排列数=p(n,r)/r=n!/r(n-r)!.
n个元素被分成k类,每类的个数分别是n1,n2,...nk这n个元素的全排列数为
n!/(n1!*n2!*...*nk!).
k类元素,每类的个数无限,从中取出m个元素的组合数为c(m+k-1,m).
练习:
1.(1)用0,1,2,3,4组合多少无重复数字的四位数?(96)
(2)这四位数中能被4整除的数有多少个?(30)
(3)这四位数中能被3整除的数有多少个?(36)
2.用0,1,2,3,4五个数字组成无重复数字的五位数从小到大依次排列.
(1) 第49个数是多少?(30124)
(2) 23140是第几个数?(40)
3.求下列不同的排法种数:
(1) 6男2女排成一排,2女相邻;(p(7,7)*p(2,2))
(2) 6男2女排成一排,2女不能相邻;(p(6,6)*p(7,2))
(3) 5男3女排成一排,3女都不能相邻;(p(5.5)*p(6,3))
(4) 4男4女排成一排,同性者相邻;(p(4,4)*p(4,4)*p(2,2))
(5) 4男4女排成一排,同性者不能相邻.(p(4,4)*p(4,4)*p(2,2))
4.有四位医生、六位护士、五所学校.
(1) 若要选派三位医生到五所学校之中的三所学校举办健康教育讲座,每所学校去一位医生有多少种不同的选派方法?(c(5,3)*p(4,3))
(2) 在医生或护士中任选五人,派到五所学校进行健康情况调查,每校去且仅去一人,有多少种不同的选派方法?(p(10,5))
(3) 组成三个体检小组,每组一名医生、两名护士,到五所学校中的三所学校为老师体检,有多少种不同的选派方法?(c(5,3)*p(4,3)*c(6,2)*c(4,2)*c(2,2))
5.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上.问用这些点为顶点,能组成多少个不同四边形?(2250)
6.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上.问用这些点为顶点,能组成多少个不同三角形?(751)
7.将N个红球和M个黄球排成一行.例如:N=2,M=2可得到以下6种排法:
红红黄黄 红黄红黄 红黄黄红 黄红红黄 黄红黄红 黄黄红红
问题:当N=4,M=3时有多少种不同排法?(不用列出每种排法)(35)
8.用20个不同颜色的念珠穿成一条项链,能做多少个不同的项链.(20!/20)
9.在单词MISSISSIPPI 中字母的排列数是(11!/(1!*4!*4!*2!)
10.求取自1,2,...k的长为r的非减序列的个数为(c(r+k-1,r))
3.3排列与组合的产生算法
1.排列的产生
方法1:(递归,深度优先产生)
程序如下:
program pailei;
const m=4;
var a:array[1..m] of integer ;
b:array[1..m] of boolean;
procedure print;
var i:integer;
begin
for i:=1 to m do
write(a[i]);
writeln;
end;
procedure try(dep:integer);
var i:integer;
begin
for i:=1 to m do
if b[i] then
begin
a[dep]:=i; b[i]:=false;
if dep=m then print else try(dep+1);
b[i]:=true;
end;
end;
begin
fillchar(b,sizeof(b),true);
try(1);
end.
方法2.根据上一个排列产生下一个排列.
程序如下:
program pailei;
const m=5;
var a:array[1..m] of integer ;
i,j,temp,k,l:integer;
procedure print;
var i:integer;
begin
for i:=1 to m do
write(a[i]);
writeln;
end;
begin
for i:=1 to m do a[i]:=i;
repeat
print;
i:=m-1;
while (i>0) and (a[i]>a[i+1]) do i:=i-1;
if i>0 then
begin
j:=m;
while a[j]0 then
begin
a[i]:=a[i]+1;
for j:=i+1 to m do a[j]:=a[j-1]+1;
end;
until i=0;
end.
练习:
1.已知n(1