两个数组对应下标数据相乘再相加和最小

在这里插入图片描述
在这里插入图片描述

本质上就是求最小值的问题
首先对两个列表排序,让最大的和最小的相乘即可得到总和最小
python的sorted() 和 sort() 支持对含有负数的列表排序,表示去年还不支持呢

n = int(input())

for i in range(n):
    m = int(input())
    # strip()去掉前后多余的空格 split() 以空格分隔 map是一个生成器对象,用list接收所有数据
    arr1 = sorted(list(map(int, input().strip().split())))
    arr2 = sorted(list(map(int, input().strip().split())))
    sum = 0
    for i in range(m):
        sum += arr1[i] * arr2[m-i-1]
    print(sum)

猜你喜欢

转载自blog.csdn.net/qq_31910669/article/details/115093335