假设我有一个数组 int [] arr={1,2,4,5,7} 并且还有数字 6 所以我需要结果为 01100 这意味着数组中的 2+4=6 所以结果将如果总和中的数字为 0,则为 1,否则我还需要结果中的位数与数组长度相同
我需要执行此操作的 java 方法
假设我有一个数组 int [] arr={1,2,4,5,7} 并且还有数字 6 所以我需要结果为 01100 这意味着数组中的 2+4=6 所以结果将如果总和中的数字为 0,则为 1,否则我还需要结果中的位数与数组长度相同
我需要执行此操作的 java 方法
这是一种递归方式。正如 JG 所指出的,一般问题没有有效的解决方案。
private static int[] solve(int[] arr, int target, int res[], int length, int sum) {
if (length == arr.length)
return (sum == target)? res : null;
res[length] = 0;
int[] r = solve(arr, target, res, length + 1, sum);
if (r != null)
return r;
res[length] = 1;
r = solve(arr, target, res, length + 1, sum + arr[length]);
if (r != null)
return r;
return null;
}
public static int[] solve(int[] arr, int target) {
return solve(arr, target, new int[arr.length], 0, 0);
}