首页 > 试题广场 >

纸牌游戏

[编程题]纸牌游戏
  • 热度指数:3625 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}Alex 与 Bob 进行如下纸牌游戏:
\hspace{23pt}\bullet\, 牌面数字均为 1\sim10 的整数;
\hspace{23pt}\bullet\, 每位玩家各有两张暗牌(自己也不知道牌面);
\hspace{23pt}\bullet\, 游戏共两回合,每回合双方各随机翻开一张未翻开的牌并比较大小;
\hspace{23pt}\bullet\, 翻开的牌面数字更大者赢得该回合,若相等则该回合无人获胜;
\hspace{23pt}\bullet\, 两回合结束后,赢得回合数更多者获胜;若平局则无人获胜。

\hspace{15pt}已知四张牌的具体数字:Alex 拥有 a_1,a_2,Bob 拥有 b_1,b_2。牌面分配固定,但翻牌顺序随机。请计算 Alex 最终获胜的不同翻牌顺序数量

输入描述:
\hspace{15pt}第一行输入整数 t\left(1\leqq t\leqq 10^4\right),表示测试用例数量。
\hspace{15pt}每个测试用例一行输入四个整数 a_1,a_2,b_1,b_2\left(1\leqq a_i,b_i\leqq10\right)


输出描述:
\hspace{15pt}对每个测试用例输出一行一个整数,表示 Alex 获胜的翻牌顺序数量。
示例1

输入

5
3 8 2 6
1 1 1 1
10 10 2 2
1 1 10 10
3 8 7 2

输出

2
0
4
0
2

说明

考虑第一个测试案例,当Alex开始时有牌值为 26 的牌,而Bob开始时有牌值为 38 的牌。游戏可能以 4 种不同的方式进行:

- Alex 翻 3 ,Bob 翻 2 。Alex 赢了第一轮。然后,Alex 翻 8 ,Bob 翻 6 。Alex 同样赢得第二轮。由于 Alex 赢了 2 个回合,所以他赢得了游戏。

- Alex 翻转 3 ,Bob 翻转 6 。Bob赢得第一轮。然后,Alex 翻 8 ,Bob 翻 2 。Alex 赢第二轮。由于双方赢得的回合数相同,因此没有人获胜。

- Alex 翻转 8 ,Bob 翻转 6 。Alex 赢了第一轮。然后,Alex 翻出 3 ,Bob 翻出 2 。Alex 同样赢得第二轮。由于 Alex 赢了 2 轮,所以他赢得了游戏。

- Alex 翻转 8 ,Bob 翻转 2 。Alex 赢了第一轮。然后,Alex 翻 3 ,Bob 翻 6 。Bob赢得这一轮。由于双方赢得的回合数相同,因此没有人获胜。

所以,最终Alex会赢的可能情况只有 2 种。
import sys

def solve(nums:list)->str:
    a1,a2,b1,b2 = nums
    a_cnt = 0
    b_cnt = 0
    a_win = 0

    if a1 > b1:
        a_cnt+=1
    elif b1 > a1:
        b_cnt+=1
    
    if a2 > b2:
        a_cnt+=1
    elif b2 > a2:
        b_cnt+=1
    
    if a_cnt > b_cnt:
        a_win += 2

    a_cnt = 0
    b_cnt = 0

    if a1 > b2:
        a_cnt+=1
    elif b2 > a1:
        b_cnt+=1
    
    if a2 > b1:
        a_cnt+=1
    elif b1 > a2:
        b_cnt+=1
    
    if a_cnt > b_cnt:
        a_win += 2
    
    return str(a_win)
    



n = input()
nums_list = [list(map(int,nums.split())) for nums in sys.stdin]
output = list(map(solve,nums_list))
print('\n'.join(output))

发表于 2025-09-01 16:34:12 回复(0)
t = int(input())
for i in range(t):
    a1,a2,b1,b2 = map(int,input().split())
    count = 0
    if a1>b1 and a2>=b2:
        count += 2
    if a1>b2 and a2>=b1:
        count += 2
    if a1==b1 and a2>b2:
        count += 2
    if a1==b2 and a2>b1:
        count += 2
    print(count)
发表于 2025-08-25 00:06:45 回复(0)