JAVA實現排列組合,簡單的一比
阿新 • • 發佈:2019-01-30
/** * 思路: * 遞迴,第一層把迴圈把n個數中的第i個裝入結果的第一個位置 * 把剩下的n-2個數迴圈裝入第二個位置 * 把剩下的n-3個數迴圈裝入第三個位置 * ..... * 直到最後一個數,返回 * 注意:下到下一層的時候注意new新的list不然,原來的list也會被改變 * 其次: * 在遞迴返回的時候應該把記錄的data最後一個去掉,否則前面的結果會 * 影響迴圈過程。 * @param arrayList * @param data * @param arrayListData * @param length */ private static void getData(ArrayList<Integer> arrayList ,StringBuilder data, ArrayList<String> arrayListData,int length){ for (int i = 0; i < arrayList.size(); i++) { data.append(arrayList.get(i)); ArrayList<Integer> newArrayList = new ArrayList<>(arrayList); newArrayList.remove(i); getData(newArrayList,data,arrayListData,length); } if (arrayList.size()==0) { arrayListData.add(data.toString()); } if (data.length()!=0){ data.deleteCharAt(data.length()-1); } }