原文:
给定一个由arr【】【4】组成的 2d 阵,代表在一场涉及 n 队的比赛中进行的 m 场足球比赛的比分,任务是按照
- 比赛规则如下:
- 每队打 2 场比赛。
- 获胜队得 2 分,失败队得 0 分。
- 在平局的情况下,两队各得一分。
- 如果 gd、ga、和 gf 分别代表目标差、目标对、目标对。团队的排名按照以下优先顺序决定:
- 分> gd > gf >名的辞书顺序。
示例:
输入: arr[][] = {“西班牙”、“英国”、“3”、“0”}、{“英国”、“法国”、“1”、“1”}、{“西班牙”、“法国”、“0”、“2”} },n = 3,m = 3 输出: 法国西班牙英国 说明:3 场比赛后积分表各:
| 组 | 匹配 已播放 | 女友 | 通用航空 | 权志龙 | 点 | 等级 | | 西班牙 | two
| three | two | one | two | two | | 英格兰 | two | one | four | -3 | one | three | | 法国 | two | three | one | two | three | one |
输入: arr[][] = {“西班牙”、“英国”、“3”、“0”}、{“英国”、“法国”、“1”、“1”}、{“西班牙”、“西班牙”、“0”、“2”} },n = 3,m = 3 t6】输出: 无效输入
方法:使用进行多属性排序可以解决这个问题。 按照以下步骤解决问题:
- arr[][] 并打印“无效”。
- 初始化一个字典说出表来存储特定队伍的 ga、gf 和 gd 。
- arr【】【】并执行以下操作:
- 将 arr[i][0]的 gf 、表[arr[i][0]][0] 增加 arr[i][2] ,将 arr[i][0]的 ga、表[arr[i][0]][1] 增加 arr[i][3]。
- 将 arr[i][1] 、表[arr[i][1]][0] 的 arr[i][3] 和 arr[i][1] 、表[arr[i][1]][1]【t11]的 arr[i][2]递增。****
- 通过表[arr[i][0][2]–表[arr[i][0][3],更新 arr[i][0]的 gd 。****
- 将 arr[i][1]的 gd 更新为表[arr[i][1][2]–表[arr[i][1][3]。****
- 如果 arr[i][2] == arr[i][3],则将表[arr[i][0][0] 和表[arr[i][1]][0] 都增加 1 。
- 如果 arr[i][2] > arr[i][3],则将表[arr[i][0][0] 增加 2 。
- 如果 arr[i][2] < arr[i][3],则将表[arr[i][1][0] 增加 2 。
- 现在, 表进行排序,名称为:
- table = sorted(table.items(),key=lambda r: (-r[1][0],-r[1][1],-r[1][2],r[0])
- 最后,打印排序表中的团队名称。
下面是上述方法的实现:
python 3
# python program for the above approach
# function to find the ranking of teams
def rankteams(arr):
# traverse the list arr
for i in range(len(arr)):
# arr[i][0] is equal to arr[i][1]
if(arr[i][0] == arr[i][1]):
print("invalid")
return
# convert the goal to integer
arr[i][2] = int(arr[i][2])
arr[i][3] = int(arr[i][3])
# stores the list of gd, ga, and gf
table = {}
# traverse the list
for i in range(len(arr)):
# store the list of ga, gf
# and gd of first team
li1 = [0] * 4
# store the list of ga, gf
# and gd of second team
li2 = [0] * 4
# if arr[i][0] is in table
if arr[i][0] in table:
li1 = table[arr[i][0]]
# if arr[i][1] is in table
if arr[i][1] in table:
li2 = table[arr[i][1]]
# increment gf by arr[i][2]
li1[2] = arr[i][2]
# increment ga by arr[i][3]
li1[3] = arr[i][3]
# increment gf by arr[i][3]
li2[2] = arr[i][3]
# increment ga by arr[i][2]
li2[3] = arr[i][2]
# update gd
li1[1] = li1[2] - li1[3]
li2[1] = li2[2] - li2[3]
# if tie
if(arr[i][2] == arr[i][3]):
li1[0] = 1
li2[0] = 1
# if arr[i][0] wins
elif(arr[i][2] > arr[i][3]):
li1[0] = 2
# if arr[i][1] wins
elif(arr[i][2] < arr[i][3]):
li2[0] = 2
# update list in table
table[arr[i][0]] = li1
table[arr[i][1]] = li2
# traverse the sorted table in the given priority
for key, value in sorted(table.items(),
key = lambda r: (-r[1][0],
-r[1][1],
-r[1][2],
r[0])):
# print the team name
print(key, end ='\n')
# driver code
# input
arr = [['spain', 'england', '3', '0'],
['england', 'france', '1', '1'],
['spain', 'france', '0', '2']]
rankteams(arr)
output:
france
spain
england
时间复杂度: o(n * log(n)) 辅助空间: o(n)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处