MATLAB代码”中给出了一种列出所有拆分数组的算法。后来在解决一个统计问题时编写了些接口程序,例如:对数字45拆分,而数组中元素为整数,取值4到13之间等。下面的这几个就是关于类似问题的接口程序。
1.已知数字A,求其由xi∈[a,b],i=1..dim的拆分组合。
functionH=p_l(dim_m,sum_m,Max,Min)%Max=b;Min=a;sum_m=A;dim_m=dim
ifMin*dim_m>sum_m||Max*dim_m
H=[];
else
p=Max-Min;
n=sum_m-dim_m*Min;
s={[0,1]};
fori=2:n%when n>1
k=size(s,2);
w={};
forj=1:k
if(s{j}(end)
w{end+1}=s{j};
w{end}(end)=w{end}(end)+1;
end
ifsize(s{j},2)
w{end+1}=s{j};
w{end}(end+1)=1;
end
end
if(i<=p)
w{end+1}=[0,i];
end
s=w;
end
ifdim_m*Min==sum_m%(1)
s={[0]};
end
H=