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对象中的最后一个元素删除,以便进行下一次迭代。