欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 和為定值的m個數

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

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

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;
}
}
}

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

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

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