perms 复制链接
简述
样本排列
算法说明:
输入整数v,返回v的阶乘V!,即排列组合数;
输入一维数组v, n=length(v),返回n个数据的n!种排列组合,二维数组;
输入一维数组v,整数k,n=length(v),返回v中任意k个元素的Vnk种排列组合,二维数组;
输入二维数组v,整数k, 重构v中所有元素为一维数组v ,n=length(v),返回v中任意k个元素的Vnk种排列组合,二维数组;
输入tsl类对象func,对于返回结果进行编辑;
注:排列的种类太多了,当输入数组长度超过10 时 排列种类达到 3628800 种,就会引发计算机内存问题。
perms(x:array):array;
名称 类型 说明 X array 样本,数组或数字
k:Int 选取个数
func:tsl类对象 默认二维表展示所有组合数据
范例01:求10的阶乘
Return perms(10);
返回结果:3628800
范例02:排列组合
Return perms(array("a","b","c"));
返回结果:
array(
("c","b","a"),
("c","a","b"),
("b","c","a"),
("b","a","c"),
("a","b","c"),
("a","c","b"))
范例03:返回数组Array(('A','B'),('C', 'D'))中任意两个数据的排列组合
v:= Array(('A','B'),('C', 'D'));
Return perms(v,2);
返回结果:
范例04:对排列组合的每列求和
Function test_1cth();
Begin
func:=createobject("funcexe");
a:=array("A","B","C");
return perms(a,3,func);
End;
type funcexe = class()
data;
function create();
begin
data := "";
end
function exe(dat);
begin
data+=dat;
end
end
返回结果: