[英]Sub set sum solution java
我需要使用recursion
和backtracking
編寫代碼,並且沒有任何循環可以找到方程式x1+x2+x3 = K
所有可能解決方案,其中K是給定數字。 並且x1 , x2, x3
是1 - 10
之間的非零正整數。
我的嘗試:
public static int subSetSum(int i, int k, int A[]) {
int sum = A[0] + A[1] + A[2];
int noOfSolutions = 0;
if(k - sum < 0 || i >= A.length)
return 0;
if(k - sum == 0) {
System.out.println(A[0] + " + " + A[1] + " + " + A[2]);
noOfSolutions =+ 1; }
noOfSolutions = subSetSum(i+1,k,A);
int newA[] = A;
newA[i] = A[i]+1;
noOfSolutions = subSetSum(i,k,newA);
return noOfSolutions;
}
運行代碼我只會得到一個解決方案。 因此,如果嘗試找到6
所有解決方案,它將只打印1+1+4
和0
(對於沒有解決方案)。
編輯
public static int subSetSum(int i, int k, int A[]) {
int sum = A[0] + A[1] + A[2];
int noOfSolutions = 0;
if(k - sum < 0 || i >= A.length)
return 0;
if(k - sum == 0) {
System.out.println(A[0] + " + " + A[1] + " + " + A[2]);
--(1)--> noOfSolutions += 1;
--(4)--> return noOfSolutions;
}
noOfSolutions += subSetSum(i+1,k,A);
--(2)--> A[i] = A[i]+1;
noOfSolutions += subSetSum(i,k,A);
--(3)--> A[i] = A[i]-1;
return noOfSolutions;
}
為例
public static void main(String[] args) {
System.out.println(subSetSum(0, 4, new int[3]));
}
產量
0 + 0 + 4
0 + 1 + 3
0 + 2 + 2
0 + 3 + 1
0 + 4 + 0
1 + 0 + 3
1 + 1 + 2
1 + 2 + 1
1 + 3 + 0
2 + 0 + 2
2 + 1 + 1
2 + 2 + 0
3 + 0 + 1
3 + 1 + 0
4 + 0 + 0
15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.