1. 程式人生 > >演算法_將一個數組中的數組合全部列出

演算法_將一個數組中的數組合全部列出

使用迴圈遞迴演算法:

public class Test {
    public static void main(String[] args){  
        String[] array = new String[]{
                "1","2","3","4"
        };
        listAll(Arrays.asList(array),"");

        }

    private static void listAll(List asList, String string) {
        // TODO Auto-generated method stub
if(asList.isEmpty()){ System.out.println(string); } for (int i = 0; i < asList.size(); i++) { List temp = new LinkedList(asList); listAll(temp, string+temp.remove(i)); } } }

這個方法十分巧妙啊,在for迴圈中將arraylist轉換成一個linkedlist物件,雙向連結串列非常方便的可以在指定的位置刪除物件temp.remove(i)的返回值就是在temp中被移走的那個數,同時呼叫這個方法也就可以在temp中將這個數移走,通過for迴圈中的i值控制被移走的是哪個數。每被移走一個數就存放在string中,當list中的書被移完時就輸出一次。多次遞迴呼叫得到最終答案。