色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 和為定值的m個數(shù)

林玟書1年前7瀏覽0評論

Java是一種非常流行的編程語言,由于其跨平臺的特性,廣泛應用于企業(yè)級開發(fā)和互聯(lián)網應用。在Java中,有時我們需要從一個數(shù)列中找出一組和為定值的m個數(shù)。下面是一個簡單的示例程序:

public class FindSum {
public static void main(String[] args) {
int[] arr = {2, 4, 6, 8, 10, 12, 14};
int sum = 20;
int m = 3;
findSum(arr, sum, m);
}
public static void findSum(int[] arr, int sum, int m) {
int n = arr.length;
int[] ans = new int[m];
boolean[] used = new boolean[n];
dfs(arr, sum, m, ans, used, 0, 0);
}
public static void dfs(int[] arr, int sum, int m, int[] ans, boolean[] used, int cur, int start) {
if(cur == m && sum == 0) {
for(int i = 0; i< m; i++) {
System.out.print(ans[i] + " ");
}
System.out.println();
return;
}
if(cur == m || sum< 0) {
return;
}
for(int i = start; i< arr.length; i++) {
if(used[i]) {
continue;
}
used[i] = true;
ans[cur] = arr[i];
dfs(arr, sum - arr[i], m, ans, used, cur + 1, i + 1);
used[i] = false;
}
}
}

上面的示例程序使用深度優(yōu)先搜索算法,從數(shù)列中找出一組和為定值的m個數(shù)。程序中首先定義了一個數(shù)組arr,表示原始的數(shù)列,sum和m則分別表示所需要的和值和數(shù)字個數(shù)。

接著程序調用了findSum函數(shù),在其中初始化了一些參數(shù)后調用了dfs函數(shù)。dfs函數(shù)是核心部分,該函數(shù)依次枚舉每個數(shù)字,如果該數(shù)字已經被使用過,則跳過,否則將其加入答案數(shù)組,并將其記為已使用。每次枚舉之后,都調用dfs函數(shù)遞歸求解。如果當前所選的數(shù)字個數(shù)等于所需的個數(shù),且其和等于目標和,則表示找到了一組解,返回。程序使用了回溯算法,在每次遞歸回溯時重置狀態(tài)。

總體而言,上面的程序是一種簡單但有效的方法來解決在Java中從數(shù)列中找出一組和為定值的m個數(shù)的問題。