首页 > 试题广场 >

比大更大

[编程题]比大更大
  • 热度指数:2128 时间限制: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
n = int(input())
nums = []
for i in range(n):
    nums.append(input())


lis_0 = [] 
for i in nums:
    num = []
    for j in i:
        num.extend(j)
    lis_0.extend(num[0])
        
lis_0 = list(int(i) for i in lis_0)

t = list(zip(lis_0, nums))

def take_one(lis): 
    return lis[0]
t.sort(key=take_one, reverse=True)

if t[1][0] == 0:
    print('0')
else:
    lis_1 = list(i[1] for i in t)
    
    s = ''.join(lis_1)
    
    print(s)
# case 60%有没有大神能看下
编辑于 2020-03-28 21:27:02 回复(0)
import sys

if __name__ == '__main__':

    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        lines = line.split()

        n = int(lines[0])

        nums = []  # 保存数字列
        for i in range(n):
            nums.append(int(sys.stdin.readline().strip().split()[0]))

        nums = list(map(str, nums))  # 转为字符列表

        flag = True  # 冒泡排序结束的标志
        while flag:
            flag = False
            for i in range(len(nums)-1):
                if nums[i] + nums[i+1] < nums[i+1] + nums[i]:
                    temp = nums[i]
                    nums[i] = nums[i+1]
                    nums[i+1] = temp
                    flag = True

        print(int("".join(nums)))

发表于 2019-08-21 22:17:49 回复(0)
while True:
    try:
        num1 = int(input())
        num2 = []
        for i in range(num1):
            num2.append(str(input()))
        num2.sort(reverse =True)
        for i in range(len(num2)-1):
            if(num2[i]+num2[i+1] < num2[i+1]+num2[i]):
                num2[i],num2[i+1] = num2[i+1],num2[i]
        result = ''.join(num2)
        while (len(result)>1 and result[0]=='0'):
            result= result[1:]
        print(result)
    except:
        break

编辑于 2019-08-07 21:15:12 回复(2)
num = int(input())
num_list = [] for i in range(num):
    tmp_num = input() for j in range(len(tmp_num)):
        num_list.append(int(tmp_num[j]))
num_list.sort(reverse = True)
result = 0 for i in range(len(num_list)):
    result = result * 10 + num_list[i] print(result)
发表于 2019-07-13 23:18:09 回复(0)