阿里4.1日笔试

唉,0分,太难受了 ,凉凉
笔试主要在做第二题,之前没准备好数据输入的代码,还浪费了一段时间(难受。。。。)
做第二题时,需要两层for循环,但是改代码的时候,发现第二层for循环死活改不好,就是进不去,最后只能在循环外面写了(心累),刚刚终于改完第二题的代码。
题目是说要打怪兽(一个箭打一个怪兽,打死这一个打下一个,都打完了就计算付出的代价,每支箭都有对应的代价,输出加和最小的那个,打不死就凉了(输出“No”)),用例的第一个数字表示测试数据的组数(两组),然后分别输入这几(两)组
第一组数据,首先给出怪兽的数量和箭的数量,然后给出每只怪兽的血量,然后给出每支箭的伤害值,然后给出每支箭的代价。
代码如下:
def solve(values2,values3,values4):
    values2.sort()
    c=list(zip(values4,values3))
    c.sort()
    sum = 0
    flag =[0]*len(values2)
    l = [i for i in range(len(values2))]
    l.reverse()
    for i in range(len(values3)):
        for j in l:
            if c[i][1]>=values2[j] and flag[j]==0:
                sum+=c[i][0]
                flag[j]=1
                break
    if flag.count(0)==0:
        return sum
    else:
        return "No"

import sys
if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    ans = 0
    array = []
    for i in range(n):
        # 读取每一行
        line1 = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values1 = list(map(int, line1.split()))
        line2 = sys.stdin.readline().strip()
        values2 = list(map(int, line2.split()))
        line3 = sys.stdin.readline().strip()
        values3 = list(map(int, line3.split()))
        line4 = sys.stdin.readline().strip()
        values4 = list(map(int, line4.split()))
        array.append(solve(values2,values3,values4))
    for i in array:
        print(i)
# 测试用例
# 2
# 3 3
# 1 2 3
# 2 3 4
# 1 2 3
# 3 4
# 1 2 3
# 1 2 3 4
# 1 2 3 1
唉,心痛。。。不知道还有没有面试😔

#阿里笔试##阿里巴巴##实习##笔试题目##Python#
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 4 评论
分享
牛客网
牛客企业服务