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

Find all combinations of -1 and 1 for a given sum

鉴于可能的值可以是 1-1

,我如何找到所有添加的组合提供给定的总和

我得到了一个长度可变的系数数组(在本例中为 3):

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

所以我的 ecuation 看起来像这样:

-x-y+2z=2

输出:

 result:[-1 1 1]

如何在 Matlab 中完成此操作?我不确定如何进行递归。

我正在考虑制作类似于开锁器的东西

1 1 1 1

^

从这里开始尝试所有组合。值必须是 1-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.