getpermute.m

来自「离散算法」· M 代码 · 共 24 行

M
24
字号
function [out_permute] = getPermute(in_values, in_first, in_jobCount)
%  输入:
%     in_values:   需排列的元素,(1 × valueCount)维
%  输出:
%     out_permute: 得到的全排列,(perCount × valueCount)维
out_permute = [];
valueCount = size(in_values, 2);
if (valueCount == in_jobCount-1)
    strcat('开始枚举 ' , num2str(in_first), '...')    
end

if (valueCount == 1) % 递归结束
    out_permute = in_values;
else
    for (iValue = 1: valueCount)
        firstVal = in_values(1, iValue);
        newValues = in_values;
        newValues(:, iValue) = [];
        newPermute = getPermute(newValues, firstVal, in_jobCount);
        perCount = size(newPermute, 1);
        curPermute = [ones(perCount, 1) * firstVal, newPermute];
        out_permute = [out_permute; curPermute];
    end   
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?