久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java如何實現排列組合算法

171次閱讀
沒有評論

共計 1196 個字符,預計需要花費 3 分鐘才能閱讀完成。

在 Java 中可以使用遞歸來實現排列組合算法。以下是一個示例代碼:

import java.util.ArrayList;
import java.util.List;
public class Combination {public static void main(String[] args) {List nums = new ArrayList();
nums.add(1);
nums.add(2);
nums.add(3);
nums.add(4);
int r = 3; // 選擇 r 個元素進行組合
List<List> combinations = combine(nums, r);
for (List combination : combinations) {for (int num : combination) {System.out.print(num + " ");
}
System.out.println();}
}
public static List<List> combine(List nums, int r) {List<List> result = new ArrayList();
List path = new ArrayList();
dfs(nums, r, 0, path, result);
return result;
}
private static void dfs(List nums, int r, int start, List path, List<List> result) {if (path.size() == r) {result.add(new ArrayList(path));
return;
}
for (int i = start; i < nums.size(); i++) {path.add(nums.get(i));
dfs(nums, r, i + 1, path, result);
path.remove(path.size() - 1);
}
}
}

上述代碼使用了深度優先搜索(DFS)的方式來生成排列組合。首先定義了一個 combine 方法,接收一個包含元素的列表和選擇的元素個數 r 作為參數。在 combine 方法中,創建了一個結果列表 result 和一個路徑列表 path。然后調用dfs 方法進行深度優先搜索。
dfs方法接收了待選擇的元素列表 nums、選擇的元素個數r、當前搜索的起始位置start、當前路徑path 和結果列表 result 作為參數。首先判斷當前路徑的長度是否等于選擇的元素個數 r,如果是,則將當前路徑加入結果列表,并返回。否則,從起始位置start 開始遍歷待選擇的元素列表 nums,將當前元素加入路徑列表path,然后遞歸調用dfs 方法繼續搜索下一個元素,搜索的起始位置為當前位置的下一個位置 i + 1。當遞歸返回后,將當前元素從路徑列表中移除,繼續遍歷下一個元素。最后,返回結果列表。
運行上述代碼,輸出結果為:

1 2 3
1 2 4
1 3 4
2 3 4

這就是給定列表中選擇 3 個元素進行排列組合的結果。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-20發表,共計1196字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 达孜县| 红桥区| 枣阳市| 方城县| 达孜县| 罗江县| 城步| 革吉县| 湖北省| 洪湖市| 孝义市| 尼勒克县| 且末县| 监利县| 易门县| 汕尾市| 台中县| 浦东新区| 泰宁县| 仙桃市| 六枝特区| 龙岩市| 凤山县| 宜州市| 永登县| 新和县| 沙河市| 峨边| 旬邑县| 雅安市| 灵台县| 科尔| 河西区| 渭源县| 米易县| 岳阳县| 乐亭县| 南溪县| 宜兴市| 剑川县| 青田县|