gpt4 book ai didi

algorithm - 对matlab中的所有子集求和

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:31 27 4
gpt4 key购买 nike

给定一个数字“c”和一个数字列表“numbers”,我试图生成我可以拥有的 c 和任何数字子集的所有总和。例如。 (1,[2,4,8]),我应该生成(注意我们总应该有 c 的总和)[1,3,5,9,7,11,13,15]

我写了下面的代码,但并不是所有的和都出现了。怎么了?

function result = allsums(c, numbers)
if isempty(numbers)
result = [];
else
[nr n_numbers] = size(numbers);
for i = 1:n_numbers
result = cat(2, c+numbers(i), allsums(c, cat(2,numbers(1:i-1),numbers(i+1:end))));
end
end

result = cat(2, result, c+sum(numbers,2));
end

最佳答案

这可能是一种方法-

%// Input array and scalar
numbers = [2,4,8]
c = 1;

%// Generate all sums for all combinations with nchoosek; then add up with c
combsums = arrayfun(@(n) sum(nchoosek(numbers,n),2),1:numel(numbers),'Uni',0)
result = [c ; c+vertcat(combsums{:})]

代码运行-

result =
1
3
5
9
7
11
13
15

关于algorithm - 对matlab中的所有子集求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28467748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com