给出integers中的array和num
.
我需要写一个函数public static int printExpr(int[] a, int num)
该函数应该打印所有combinations,可以给出+
或-
运算符的数字num
,并返回combinations的数字.
答案应该是recursive
例如,对于given array人:
{1, 3, 6, 2}
和num=4
输出应为:
+3+1=4
+6-3+1=4
+2+3-1=4
+2+6-3-1=4
-2+6=4
5
My attempt:
public static void main(String[] args) {
int[] a = {1, 3, 6, 2};
System.out.println("\n" + printExpr(a, 4));
}
public static int printExpr(int[] a, int num) {
return printExpr(a, num, 0, 0, "");
}
public static int printExpr(int[] a, int num, int i, int sum, String s) {
if (i < 0 || i >= a.length)
return 0;
if (num == sum) {
System.out.println(s+"=4");
return 1 + printExpr(a, num, i , 0, "") ;
}
return printExpr(a, num, i + 1, sum, s + "")+printExpr(a, num, i + 1, sum + a[i], s + "+" + a[i]) + printExpr(a, num, i + 1, sum - a[i], s + "-" + a[i]) ;
}
My output:
+1+3=4
+1-3+6=4
2
我认为这类问题是SubsetSum.
我错过了什么?
不允许使用NoteLinkedList
、HashSet
等.