题目描述
【问题描述】设有n个正整数(n<=20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213。
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613。
输入
【输入格式】n
n个数,0<每个数<2000000000
输出
【输出格式】连接成的多位数。
样例输入
3
13 312 343
样例输出
34331213
很经典的一道贪心题目呐,我的思路是将这些数两两组合起来,比较大小,然后进行响应的排序。比如13和312组合 变成 13312和31213 判断13在那边组合的时候这个数比较大,那么13就排在那边,之后就是13和343比较,同理。然后就是312和343。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] f = new int[n];
for (int i = 0; i < f.length; i++) {
f[i] = scanner.nextInt();
}
String max = "";
for (int i = 0; i < f.length-1; i++) {
for (int j = i+1; j < f.length; j++) {
if(!max(Long.parseLong(f[i]+""+f[j]), Long.parseLong(f[j]+""+f[i]))) {
int temp = f[i];
f[i] = f[j];
f[j] = temp;
}
}
}
for (int i = 0; i < f.length; i++) {
max = max.concat(f[i]+"");
}
System.out.println(max);
}
private static boolean max(Long a , Long b) {
return a > b ;
}
}