找到给定总和的-1和1的所有组合

时间:2018-06-05 03:58:41

标签: matlab sieve-of-eratosthenes

如果可能的值可以是1-1

,我怎样才能找到添加的所有组合提供给定的总和

给出了一系列具有变化长度的系数(在本例中为3):

array: [-1 -1 2]
desired sum: [2]

所以我的看法会是这样的:

-x-y+2z=2

输出:

 result:[-1 1 1]

如何在Matlab中完成?我不知道如何做递归。

我在考虑制作类似于锁定选择的东西

1 1 1 1

^

从此处移动并尝试所有组合。值必须为1-1

1 个答案:

答案 0 :(得分:1)

我会生成所有可能的序列,然后检查它们是否与结果匹配。这应该比递归更快更清晰。

现在,如何生成所有可能的序列 - 从二进制数中获取提示。

要将当前数字转换为二进制数据然后再转换为数组(您需要的其他步骤应该足够清晰):

dec2bin(currentNumber, N); % N is the length of array.
arr = binNum(:) == '1';
matCoeff = -1 + 2 * arr; % This gives 1 on places with 1 and -1 on places with 0.