华为机试,一星题,python, 运行代码只通过23%的测试用例,何解?

编程题:输入两对数组array1、array2,输入整数k,在两组数组中取k对元素,将k对元素相加,求k对元素相加的最小和,每组数组的第一个元素也是数组size(大小),0<k<arary1.size*array2.size,若两对元素在array1和array2中的元素下标相同,则视为一对元素。

例子:输入:3 1 1 2

                     3 1 2 5

                     2

          输出:4

我的没有通过的编程代码

array1 = sorted(list(map(int, input().split())))
array2 = sorted(list(map(int, input().split())))
k = int(input())
res = []
s_sum = 0
for i in array1:
    for j in array2:
        res.append(int(i)+int(j))
res = sorted(res)
for b in range(k):
    s_sum += res[b]
print(s_sum)

 

你上来就给人家排序,下标早就乱了,但是要求判断两对元素在array1和array2中的元素下标是否相同相同,相同则视为一对元素,结果怎么可能会全对呢

请问是原题吗,我居然没看懂【doge】

假设现在有两组输入

A=[3, 1, 2, 2]
B=[3, 4, 2, 5]
K=1              

令K=1,那么应该取的是[A[2],B[2]]=[2,2]得到最小结果4

按照你的方法,上来先排序后:

A=[1,2,2,3]
B=[2,3,4,5]
k=1

那么你自己看看选一对最小的值是多少?还是不是跟题目一样了?