1. 程式人生 > >JAVA實現排列組合,簡單的一比

JAVA實現排列組合,簡單的一比

    /**
     * 思路:
     * 遞迴,第一層把迴圈把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);
        }
    }