MATLAB求解组合数和所有组合可能

% 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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值