現在我試圖編寫一個函數,它接受一個數組和一個整數n,並給出每個大小爲n的組合列表(因此是一個int數組列表)。我可以使用n個嵌套循環來編寫它,但這隻適用於特定大小的子集。我無法弄清楚如何推廣它適用於任何大小的組合。我想我需要使用遞歸?從數組(Java)中獲取大小爲n的所有組合的算法?
這是3個元素的所有組合的代碼,我需要一個算法來處理任意數量的元素。
import java.util.List;
import java.util.ArrayList;
public class combinatorics{
public static void main(String[] args) {
List<int[]> list = new ArrayList<int[]>();
int[] arr = {1,2,3,4,5};
combinations3(arr,list);
listToString(list);
}
static void combinations3(int[] arr, List<int[]> list){
for(int i = 0; i<arr.length-2; i++)
for(int j = i+1; j<arr.length-1; j++)
for(int k = j+1; k<arr.length; k++)
list.add(new int[]{arr[i],arr[j],arr[k]});
}
private static void listToString(List<int[]> list){
for(int i = 0; i<list.size(); i++){ //iterate through list
for(int j : list.get(i)){ //iterate through array
System.out.printf("%d ",j);
}
System.out.print("\n");
}
}
}
這太問題可以幫助你 [求冪] [1] [1]:http://stackoverflow.com/questions/1670862/obtaining-a-powerset-of-a-set-in-java – harshad