多个整数连接为最大整数问题 【贪心】

题目描述
【问题描述】设有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 ;
	}
}

猜你喜欢

转载自blog.csdn.net/WXZCYQ/article/details/104096027