赛马问题

# 古时候,国王 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)
# 说实话,我是看了别人的代码后自己改写的

 

posted @ 2021-06-14 19:01  nilinwang  阅读(243)  评论(0)    收藏  举报