求助: pascal 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们

急 pascal

排列与组合是常用的数学方法,其中组合就是从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

const mix=21; //题意如此,暂且限定到这。
var
n,m,d,r,i,z,c:integer;
q:array[0..mix] of 0..1;
a:array[0..mix] of integer;
procedure print;
var i,j:integer;
begin
for i:=1 to r do
write(a[i]:3); // 题意如此往往容易忽视.
writeln;
end;
function panding(l,m:integer):boolean;
var
i,j:integer;
begin
panding:=true;
for i:=1 to m-1 do
begin
if a[i]=l then begin panding:=false; exit; end;
if a[i]>l then begin panding:=false; exit; end;
end;
end;
procedure try (k:integer);
var i,j,l:integer;
begin
for j:=a[k-1] (1)to n do
if (panding(j,k))and (q[j]=0) then
begin
a[k]:=j;
q[j]:=1;
if k=r then begin print end
else try(k+1);
q[j]:=0;
end;
end;
begin
assign(input,'Compage.in');
reset(input);
assign(output,'Compage.out');
rewrite(output);
read(n,r);
if (n=0) or (r=0) then
halt; //注意边界.
for i:=1 to n do
begin
q[i]:=0;
a[i]:=0;
end;
a[0]:=1;
try(1);
close(input);
close(output);
end.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-29
啊哈,此乃全排列是也!递推递归都可以追问

有代码吗

求助: pascal 排列与组合是常用的数学方法,其中组合就是从n个元素中...
n,m,d,r,i,z,c:integer;q:array[0..mix] of 0..1;a:array[0..mix] of integer;procedure print;var i,j:integer;begin for i:=1 to r do write(a[i]:3); \/\/ 题意如此往往容易忽视.writeln;end;function panding(l,m:integer):boolean;var i,j:integer;begin panding:=true;...

pascal排列组合教程
从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...

组合数学的常用算法有什么?
排列与组合:排列与组合是组合数学的基本概念,它们分别表示从n个不同元素中取出k个元素的有序和无序的选取方式。排列的计算公式为A(n, k) = n! \/ (n-k)!,组合的计算公式为C(n, k) = n! \/ [k! * (n-k)!]。二项式定理:二项式定理是一个关于代数表达式(a + b)^n的展开式,它...

其他排列与组合公式 从n个元素中取出m个元素的循环排列数=A(n,m)\/...
从n个元素中取出m个元素是a(n,m)你懂吧,然后这里假设是a(9,4),9个选4 个,然后举个例子,选出的是 1234 2341 3412 4123 不都是一样吗 你把它想象成是几个数字围了个圈子吗 所以a(9.4)就要再除以4,就是9!\/4(9-4) !

为什么排列~组合~概率~的数学题这么难类~~给点技巧~~重重有赏~!_百度...
二、元素分析与位置分析法 对于有附加条件的排列组合问题,一般采用:先考虑满足特殊的元素和位置,再考虑其它元素和位置。例3、 用0,2,3,4,5,五个数字,组成没有重复数字的三位数,其中偶数共有( )。A. 24个 B。30个 C。40个 D。60个 [分析]由于该三位数为偶数,故末尾数字必为偶数...

1.2.3.4.5能排列多少组合
排列(讲求顺序,相当于彩票中的直选号):选一位数:共5种;选二位数;共20种;选三位数:共60种;选四位数:共120种:选五位数:共120种 从n个元素中选取r个元素的排列公式:P(r n)=n!\/(n-r)组合(不讲求顺序,相当于彩票中的组选号):选一个数:共5种 选二位数;共10种;选三...

初等计数方法和组合恒等式
一、初等计数方法 计数理论中最基本的概念还是排列与组合,我们早已接触。首先,组合数学不仅仅是做排列组合的,至今它已经发展出了比较丰富的理论,但同时,排列组合中的一些思想的确是十分重要的。在n个不同元素中取出r个排成一排,叫做n个不同元素的r-排列,其排列数我们早已熟悉,即[公式] . 所要...

pascal n个数的r个数的组合
n,r,tot:longint; \/\/如果n和r的值再大一点的话,你应该考虑用高精 ans:array[1..maxn] of longint; \/\/记录每个组合 procedure dfs(k,p:longint); \/\/k是当前递归的层数,p是当前数可以取到的最小值,这里p是为了防止重复 var i:longint;begin if k=r+1 then begin \/\/如果...

高中排列组合计算公式都有什么?
排列组合计算公式,如下:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数。

PASCAL编程序找出N个自然数(1,2,3,…,N)中的R个数的组合。
program _lixd_arrage_NR;var n,r,i,j:integer;a:array[1..20] of integer;begin write('n,r='); readln(n,r);i:=1;a[1]:=n;repeat if i<>r then if a[i]>r-i then begin a[i+1]:=a[i]-1;i:=i+1;end else begin i:=i-1;a[I]:=a[I]-1 end else begin ...

相似回答