赛马问题
# 古时候,国王 A和国王 B 都十分热爱赛马运动。 # 他们分别有 N匹马,他们知道自己和 对手每只马的速度。 # 两人进行 N 场比赛,每次比赛双方各出一匹马,每匹马限比一次。 # 国王 A通过某种特殊途径,已预先打探到了国王 B 派出的马的顺序。 # 比赛规则:如果国王 A的马的速度大于国王 B的马的速度,则国王 A胜; # 如果国王 A 的马的速度等于国王 B的马的速度,则是平局; # 如果国王A的马的速度小于国王 B 的马的 速度,则国王 A 输。其中胜者可以从对方手中得到¥200, # 输者必须给对方¥200,平局各 不付钱。 # 问国王 A 要使用怎样的策略,派自己的马和对手比,才能使自己赚的钱最多(或者输 的钱最少) # h获得外界的输入信息 n = int(input('请输入马匹数:')) GA = [] # 创建集合收集马匹速度 print("国王A的马的速度") GA = list(map(int, input().split())) print("国王B的马的速度") GB = list(map(int, input().split())) reward = list() GA = sorted(GA) # 升序排序 GB = sorted(GB) while len(GA): # 循环进行比较,当集合为空时停止 if GA[0] > GB[0]: # 国王A最慢的比国王B最慢的快,这两只比较,删除 reward.append(1) del GA[0], GB[0] elif GA[0] < GB[0]: # 国王A最慢的比国王B最慢的慢 if GA[0] == GB[-1]: reward.append(0) del GA[0], GB[-1] else: reward.append(-1) # 国王A最慢的与国王B王最快的相等,用最慢的马换取国王B最快的马,值,删除 del GA[0], GB[-1] elif GA[0] == GB[0]: # 国王A最慢的与国王B最慢相等 if GA[-1] > GB[-1]: # 国王A最快的与国王B最快相等,最快比最快,删除 reward.append(1) del GA[-1], GB[-1] elif GA[-1] < GB[-1]: # 国王A最快的与国王B最快慢,最慢比最快,删除 reward.append(-1) del GA[0], GB[-1] # 用最慢的马PK掉对方最快的,值 elif GA[-1] == GB[-1]: # 国王A最快的与国王B最快相等 if GA[0] == GB[-1]: # 国王A最慢的国王B最快相等,最慢比最快,删除 reward.append(0) del GA[0], GB[-1] else: reward.append(-1) # 国王A最慢的与国王最快慢,最慢比最快,删除 del GA[0], GB[-1] print("获胜情况(1为国王A赢,-1为国王B赢,0为平局){}".format(reward)) rewardA = reward.count(1) - reward.count(-1) print(rewardA)
# 说实话,我是看了别人的代码后自己改写的
nilinwang

浙公网安备 33010602011771号