重新排列数组A,以便在一对一进行比较时A赢得与数组B的最大比较数

问题描述 投票:0回答:1

假设我有一个数组A = [3, 6, 7, 5, 3, 5, 6, 2, 9, 1]B = [2, 7, 0, 9, 3, 6, 0, 6, 2, 6]

重新排列数组A的元素,以便当我们像3与2进行比较和6与7进行依此类推时,我们具有最大的获胜率(组合,其中A[i] > B[i]为最大(0<=i<len(A))。]]

我尝试了以下方法:

def optimal_reorder(A,B,N):
    tagged_A = [('d',i) for i in A]
    tagged_B = [('a',i) for i in B]
    merged = tagged_A + tagged_B
    merged = sorted(merged,key=lambda x: x[1])
    max_wins = 0
    for i in range(len(merged)-1):
        print (i)
        if set((merged[i][0],merged[i+1][0])) == {'a','d'}:
            if (merged[i][0] == 'a') and (merged[i+1][0] == 'd'):
                if (merged[i][1] < merged[i+1][1]):
                    print (merged[i][1],merged[i+1][1])
                    max_wins += 1
    return max_wins

引用自here但是对于给定的A和B,这种方法似乎无法给出正确的答案,即如果A = [3, 6, 7, 5, 3, 5, 6, 2, 9, 1]B = [2, 7, 0, 9, 3, 6, 0, 6, 2, 6]则最大获胜次数为7,但我的算法给出了5。

我在这里缺少什么吗?

假设我有一个数组A = [3、6、7、5、3、5、6、2、9、1]和B = [2、7、0、9、3、6、0、6 ,2,6,]重新排列数组A的元素,以便当我们像3与2以及6与7进行元素方式比较时...

arrays python-3.x sorting mergesort array-algorithms
1个回答
0
投票

该算法如何:

© www.soinside.com 2019 - 2024. All rights reserved.