演算法_將一個數組中的數組合全部列出
阿新 • • 發佈:2019-02-20
使用迴圈遞迴演算法:
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中的書被移完時就輸出一次。多次遞迴呼叫得到最終答案。