アルゴリズムの基礎(四)----計算配列の組み合わせの最大和
任意の長さの配列を与えて、配列内の数の組み合わせられる最大の整数を求めます
配列{9,98,123,32}のように、結果は99832123である.
配列{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);
}
}
}