首页 > 试题广场 >

比大更大

[编程题]比大更大
  • 热度指数:2120 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一列非负整数,求这些数连接起来能组成的最大的数。

输入描述:
第一行n>0是一个正整数,表示一共有n个输入。以后每行是一个非负整数,共有n行。


输出描述:
n个输入的非负整数连接成的最大的数
示例1

输入

6
9
8
7
65
4
3

输出

9876543
示例2

输入

2
11
2

输出

211
import java.util.Scanner;

public class Main{

public static void main(String[] args){
Scanner s=new Scanner(System.in);
int input=s.nextInt();
int[] a=new int[input];
for(int i=0;i<input;i++){
int j=s.nextInt();
a[i]=j;
}
s.close();
int temp=0;
for(int i=a.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(paixu(a[j],a[j+1])){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
String num="";
if(a[0]==0) {
num="0";
}else {
for(int b:a){
num+=b;
}
}


System.out.println(num);
}
public static boolean paixu(int num1,int num2) {
  int p1=String.valueOf(num1).length();
        int p2=String.valueOf(num2).length();
        long r1=num1;
        long r2=num2;
           for(int i=0;i<p2;i++){
            r1=r1*10;
        }
            for(int i=0;i<p1;i++){
            r2=r2*10;
        }
       r1+=num2;
       r2+=num1;
        if(r1<r2) {
            return true; 
        }else {
            return false;
            
        }




}
}

编辑于 2019-08-08 19:21:17 回复(0)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Test {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        String[] strs = new String [num];
        for (int i = 0; i < num; i++) {
             strs[i] = sc.nextInt()+"";
        }


        Arrays.sort(strs, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {

                int length = o1.length() > o2.length() ? o1.length() : o2.length();
                for (int i = 0; i < length; i++) {

                    if (i >= o1.length()){
                        return 1;
                    }
                    if (i >= o2.length()){
                        return -1;
                    }
                     if (o1.charAt(i) > o2.charAt(i)){
                         return 1;
                     }else if(o1.charAt(i) < o2.charAt(i)){
                         return -1;
                     }
                }

                return 0;
            }
        });



        String result = "";
        for (int i = num-1; i >= 0; --i) {
            System.out.println(strs[i]);
            if (!strs[i].equals("0")){
                result += strs[i];
            }

        }

        if (result != ""){
            System.out.println(result);
        }else{
            System.out.println(0);
        }
    }
}
编辑于 2019-07-09 11:22:49 回复(0)