找到给定总和的所有 -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.
鉴于可能的值可以是 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.