% 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求解组合数和所有组合可能
最新推荐文章于 2024-02-22 16:49:55 发布