给定一个任意长度的数组,求数组内的数能组合出来的最大整数
如数组{9, 98, 123, 32},结果是99832123
package other; import java.util.ArrayList; public class Main { public static void main(String args[]) { ArrayList<Integer> al = new ArrayList<Integer>(); al.add(9); al.add(98); al.add(123); al.add(32); Main main = new Main(); main.genAllArray(al, al.size()); System.out.println(main.max); } ArrayList<Integer> result = new ArrayList<Integer>(); String max = "0"; @SuppressWarnings("unchecked") public void genAllArray(ArrayList<Integer> al, int size) { for (int i = 0; i < al.size(); i++) { result.add(al.get(i)); ArrayList<Integer> tl = (ArrayList<Integer>) al.clone(); tl.remove(i);//去除已经插入的数 if (al.size() != 1) { genAllArray(tl, size);//递归剩下的数组成的数组 } if (result.size() == size) { long temp = Long.parseLong(max); max = ""; for (int k = 0; k < result.size(); k++) { max += result.get(k).toString(); } if (Long.parseLong(max) < temp) { max = String.valueOf(temp); } } result.remove(result.size() - 1); } } }