首页 > 试题广场 >

最小年龄的3个职工

[编程题]最小年龄的3个职工
  • 热度指数:11643 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。

输入描述:
输入第一行包括1个整数N,3<=N<=30,代表输入数据的个数。
接下来的N行有N个职工的信息:
包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。


输出描述:
可能有多组测试数据,对于每组数据,
输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。
关键字顺序:年龄>工号>姓名,从小到大。
示例1

输入

5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65

输出

501 Jack 6
923 Lucy 15
814 Mickle 65
while True:
    try:
        n=int(input().strip())
        inp=[]
        for i in range(n):
            inp.append(list(input().strip().split(' ')))
        inp=sorted(inp,key=lambda x:(int(x[2]),int(x[0]),x[1]))
        min_num=min(n,3)
        for i in range(min_num):
            print(' '.join(inp[i]))
    except:
        break
发表于 2019-08-19 08:59:40 回复(0)

python solution:

while True:
    try:
        a, arr = int(input()), []
        for i in range(a):
            id, name, age = input().split()
            arr.append([int(id), name, int(age)])
        for i in sorted(arr, key=lambda c: (c[2],c[0],c[1]))[:3]:
            print(i[0],i[1],i[2])
    except:
        break
发表于 2017-10-17 09:09:37 回复(1)
try:
    while 1:
        table = []
        for _ in range(input()):
            table.append(raw_input().split())
        result = sorted(table,key=lambda x:(int(x[-1]),int(x[0]),x[1]))[:3]
        for i in result:
            print ' '.join(i)
except:
    pass

发表于 2016-12-23 09:47:53 回复(0)