首页 文章资讯内容详情

在Python中从给定数组中找到最大nCr值的一对

2026-06-04 1 花语

假设我们有一个具有n个整数的数组arr,我们必须从数组中找到arr[i]和arr[j],以便arr[i]Carr[j]尽可能大。如果一对以上,则退回其中任何一对。

因此,如果输入类似于[4,1,2],则输出将为42,因为4C1=4、4C2=6和2C1=2,因此(4,2)仅是我们想要的对。

为了解决这个问题,我们将遵循以下步骤-

对列表进行排序

N:=v[n-1]

如果Nmod2与1相同,则

打印(N,右)

打印(N,左)

如果v[i]>首先,则

除此以外,

温度:=我

打破

res1:=差异

左:=v[i]

差异:=第一-v[i]

如果差异<res1,则

第一:=N/2(整数除法)

第二:=第一+1

左:=-1,右:=-1

温度:=-1

对于0到n范围内的i,执行

正确的:=v[temp]

差异1:=第一-左

差异2:=右-秒

如果差异1<差异2,则

除此以外,

除此以外,

差异:=|v[i]-最大|

如果差<res不为零,则

res:=差异

R:=v[i]

最大:=N/2(整数除法)

res:=3*(10^18)

R:=-1

对于介于0到n-1的i

打印(N,R)

示例

让我们看下面的实现以更好地理解-

def findMatrixPair(v, n): v.sort() N = v[n - 1] if N % 2 == 1: first = N // 2 second = first + 1 res1, res2 = 3 * (10 ** 18), 3 * (10 ** 18) left, right = -1, -1 temp = -1 for i in range(0, n): if v[i] > first: temp = i break else: difference = first - v[i] if difference < res1: res1 = difference left = v[i] right = v[temp] difference1 = first - left difference2 = right - second if difference1 < difference2: print(N, left) else: print(N, right) else: max = N // 2 res = 3 * (10 ** 18) R = -1 for i in range(0, n - 1): difference = abs(v[i] - max) if difference < res: res = difference R = v[i] print(N, R) v = [4,1,2] n = len(v) findMatrixPair(v, n)

输入值

[4,1,2], 3

输出:

4 2