给定一个任意长度的数组,求数组内的数能组合出来的最大整数
如数组{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);
}
}
}