% function [aCb,SelectMap] = Combine_AinB(A,B)
% 获得组合数 aCb 及所有组合可能的二进制表达SelectMap
% 采用递归实现
%
function [aCb,SelectMap] = Combine_AinB(A,B)
aCb = 1;
SelectMap = zeros(1,B);
if A>B
disp("Error: A>B");
return;
elseif (A<0 || B<=0)
disp("A<0 or B<=0");
return
elseif (A==0)
return
elseif (A==1)
aCb = B;
SelectMap = diag(ones(1,B));
return
elseif (A==B)
aCb = 1;
SelectMap = ones(1,B);
return
end
[aCb1,SelectMap1] = Combine_AinB(A-1,B-1);
[aCb0,SelectMap0] = Combine_AinB(A,B-1);
aCb = aCb1 + aCb0;
SelectMap = zeros(aCb,B);
SelectMap(1:aCb0,1) = zeros(aCb0,1);
SelectMap(aCb0+1:aCb0+aCb1,1) = ones(aCb1,1);
SelectMap(1:aCb0,2:B) = SelectMap0;
SelectMap(aCb0+1:aCb0+aCb1,2:B) = SelectMap1;
MATLAB求解组合数和所有组合可能
最新推荐文章于 2026-01-28 17:33:38 发布
该函数使用递归算法计算从集合A中选择B个元素的组合数aCb,并生成所有可能的二进制选择映射SelectMap。当A大于B、A或B小于0时,函数返回错误信息。对于特殊情况A等于1或B,函数直接返回结果。其余情况下,通过递归计算组合数并构造SelectMap矩阵。

3万+

被折叠的 条评论
为什么被折叠?



