Java是一種廣泛使用的編程語言,常用于開發各種類型的應用程序。在本文中,我們將探討如何使用Java編寫程序來求解所有和等于n的方案。
public static void findAllSum(int[] arr, int sum) { if (arr == null || arr.length == 0) { return; } Listlist = new ArrayList<>(); backtrack(arr, list, 0, sum); } private static void backtrack(int[] arr, List list, int start, int sum) { if (sum == 0) { System.out.println(list.toString()); } else if (sum< 0) { return; } else { for (int i = start; i< arr.length; i++) { list.add(arr[i]); backtrack(arr, list, i, sum - arr[i]); list.remove(list.size() - 1); } } }
上述代碼中,我們定義了一個findAllSum方法用于求所有和等于n的方案。方法中先判斷了數組是否為空,如果不為空則定義了一個List對象和一個backtrack方法。backtrack方法使用遞歸回溯的方式求解所有和等于n的方案,其中傳入的參數分別是數組arr、List對象list、起始下標start以及目標和sum。當sum等于0時,我們打印出當前得到的一個方案。當sum小于0時,直接返回。當sum大于0時,我們通過循環遍歷數組元素,并將其加入list對象中。然后再遞歸調用backtrack方法,更新list對象和sum值。最后,將list對象中的最后一個元素刪除,以便進行下一次迭代。