网易实习生编程题2

来源:互联网 发布:知乎 usb光驱 编辑:程序博客网 时间:2024/06/09 17:44

这道题一开始想复杂了,导致通过率只有90%,其实就是一个数学问题,time = walkTime*D(user,taxi)+taxiTime*D(taxi,Destination),找出所有time的最小值就行了。

要好好分析问题。
#coding= utf-8#2017网易实习编程第二道 通过90%#还要考虑:车离人近但是离目的地远的情况,所以这道题应该直接算出所有可能的时间,然后找到最小值。#分情况讨论是复杂的,直接转化为数学问题比较简单,要学会简化问题n = int(raw_input()) #出租车个数tx = raw_input()  #所有出租车横坐标ty = raw_input() #所有出租车纵坐标des = raw_input() #目的地横纵坐标time = raw_input() #步行时间 出租车时间tx = tx.split()ty = ty.split()des = des.split()des[0] = int(des[0])des[1] = int(des[1])time = time.split()wt = int(time[0]) #走路时间tt = int(time[1]) #taxi时间for i in xrange(len(tx)):    tx[i] = int(tx[i])    ty[i] = int(ty[i])#计算步行时间lengh = abs(des[0])+abs(des[1])walkt = lengh*wt#TAXI时间to_taxi = [] #存放人到出租车的距离for i in xrange(n):    to_taxi.append(abs(tx[i])+abs(ty[i]))taxi_des = [] #对应存放出租车至目的地的距离for i in xrange(n):    taxi_des.append(abs(des[0]-tx[i])+abs(des[1]-ty[i]))time = [] #存放所有可能的时间for i in xrange(n):    time.append(wt*to_taxi[i]+tt*taxi_des[i])result = min(time)print result'''min_len = min(taxi_dis) #距离最近的车距离#若存在距离相同的情况same = []index = []if taxi_dis.count(min_len) > 1:    for i in xrange(n):        if taxi_dis[i] == min_len:            tmp = abs(tx[i]-des[0])+abs(ty[i]-des[1])            same.append(tmp)    result = min(same)else:    min_index = taxi_dis.index(min(taxi_dis)) #该车对应的坐标    #该出租车据des距离    tax_len = abs(tx[min_index]-des[0])+abs(ty[min_index]-des[1])    taxit = tax_len*tt +wt*min_len    result = min([walkt,taxit])'''



0 0
原创粉丝点击