2018年网易深度学习图像实习校招编程题(100%案例通过)python解析

小明定了n个闹钟防止上课迟到,每个闹钟时间不同(5 0 代表5点0分闹钟),上课路程花费k分钟(k<100),第一堂课上课时间为T(6 58 代表点58分上课),请找出一个能让小明不迟到的最晚闹钟时间。

输入例子:

4 0

5 0

6 0 

59

6 59

输出例子:

6 0

解析:本题的难点主要在于你一开始并不知小明这个zz设置了几个闹钟,因此在代码书写时要考虑到不同闹钟数量带来的影响,数据读取后就只要进行一次筛选(选出不会迟到的闹钟时间),一次排序(排出最晚闹钟时间)。本文使用exec函数和str的format函数完成未知数量参数的获取,将时间转化为与0点0分的相差分钟数,然后进行筛选和排序,代码如下:

#python3 代码

number_alarm = int(input())

for i in range(number_alarm):
    exec('time{} = [int(i) for i in input().strip().split()]'.format(i))
time_load = int(input().strip())
class_time = [int(i) for i in input().strip().split()]
def time_trans(s):
    return s[0]*60 + s[1]
for i in range(number_alarm):
    exec ('class_time{} = time_trans(time{})'.format(i,i))
trans_class_time = time_trans(class_time)
final = []
for i in range(number_alarm):
    exec ('if trans_class_time - class_time{} >= time_load:final.append(class_time{})'.format(i,i))
best_time = max(final)

print (best_time//60,best_time%60)

#python2代码

number_alarm = int(raw_input())
for i in range(number_alarm):
    exec 'time{} = [int(i) for i in raw_input().strip().split()]'.format(i)
time_load = int(raw_input().strip())
class_time = [int(i) for i in raw_input().strip().split()]
def time_trans(s):
    return s[0]*60 + s[1]
for i in range(number_alarm):
    exec 'class_time{} = time_trans(time{})'.format(i,i)
trans_class_time = time_trans(class_time)
final = []
for i in range(number_alarm):
    exec 'if trans_class_time - class_time{} >= time_load:final.append(class_time{})'.format(i,i)
best_time = max(final)

print best_time//60,best_time%60

最后小小讲一点,python3中把exec和print都封装成了函数哇,要不是当初python2入的门,碰到这个就头疼了

PS:非计算机科班出身,没学过C和数据结构,本次笔试除了编程和少量算法题,完全不会,凉凉月色为你落地成盒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值