在Python中查找最佳无冲突团队的程序

在Python中查找最佳无冲突团队的程序

假设我们有两个列表,称为“分数”和“年龄”,其中 scores[i] 和 ages[i] 表示篮球比赛中第 i 个球员的得分和年龄。我们想选择具有最高总分的团队。团队的得分是团队中所有球员得分的总和。但我们不允许比赛中存在冲突。这里如果较年轻的球员的得分严格高于较年长的球员,则存在冲突。

因此,如果输入为scores = [5,7,9,14,19],ages = [5,6,7,8,9],则输出将为54,因为我们可以选择所有球员。

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

  • sa :由从 ages 和 scores 中取出元素 a 和 s 组成的对形成的列表
  • 对列表 sa 进行排序
  • scores :从 sa 制成得分列表
  • maxScore :0
  • n :分数大小
  • dp :长度为n的数组,用0填充
  • 对于i在0到n-1的范围内,执行以下操作
    • score:scores[i]
    • dp[i]: = score
    • 对于j在0到i-1的范围内,执行以下操作
      • 如果 scores[j] ≤ score,则
      • dp[i]:= dp[i] 和 dp[j]+score 的最大值
    • maxScore:maxScore 和 dp[i] 的最大值
  • 返回 maxScore

示例

让我们看一下以下实现,以更好地理解−

def solve(scores, ages):
   sa = [[a,s] for a,s in zip(ages,scores)]

   sa.sort()
   scores = [s for a,s in sa]

   maxScore = 0
   n = len(scores)
   dp = [0] * n

   for i in range(n):
      score = scores[i]
      dp[i] = score

      for j in range(i):
         if scores[j] ≤ score:
            dp[i] = max(dp[i],dp[j] + score)
      maxScore = max(maxScore, dp[i])

   return maxScore

scores = [5,7,9,14,19]
ages = [5,6,7,8,9]
print(solve(scores, ages))

输入

[5,7,9,14,19], [5,6,7,8,9]

输出

54

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程