1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

这题本质就是 模拟 + 队列 + 栈/表结构维护桌面状态。

核心规则抽象

我们把三部分状态维护出来:

  • 甲、乙手牌:都是“队首出牌,队尾收牌”,所以用 队列 最合适。

P14204.小猫钓鱼纸牌游戏(200分)

    1000ms Tried: 277 Accepted: 32 Difficulty: 7 所属公司 : 华为od
    算法与标签>模拟

题目内容

有两名玩家甲和乙,他们玩一种“小猫钓鱼”扑克牌游戏。扑克牌为 A、2、3、...、J、Q、KA、2、3、...、J、Q、KA、2、3、...、J、Q、K,不考虑花色都用 1−131-131−13 来表示,然后给甲、乙两人各发 nnn 张牌,按给定顺序排成队列,这些牌背面朝上,正面朝下放置,队列的第一个元素是背面的第一张牌。

游戏规则如下

1.出牌与收牌

-初始出牌时,甲先出牌,打出的牌正面朝上放在桌面的最底部,然后乙出牌,正面朝上放在甲的牌张上面,然后甲乙轮流出牌,直到触发收牌或者任意一个玩家牌出完。

-如果玩家出牌后触发了收牌,则把收到的一摞牌作为整体翻面后,背面朝上正面朝下放到现有牌的底部,然后当前收牌的玩家继续出牌。

2.收牌规则

若当前打出的牌点数,与桌面上之前某张牌的点数相同,则触发收牌,收牌的范围是两张相同点数牌之间的所有牌(含这两张)。

-若当前打出的牌是 JJJ,并且此时桌面上已有至少一张牌(不含当前这张),则当前玩家触发收牌,收牌的范围是桌面上的所有牌。若桌面上原本没有牌,则 JJJ 仅作为普通牌放到桌面

3.游戏结束条件

-若某位玩家在自己回合开始时已经没有牌可出,则游戏立即结束,如果此时对方还有余牌,则对方获胜,如果对方也无牌,则平局。

-若在模拟过程中,出牌总次数超过一个上限(100001000010000 次)仍未结束,则认为游戏进入死循环,判定为平局。

输入描述

甲的初始牌队列和乙的初始牌队列,甲乙初始手牌数量相等,均为整数 n(1≤n≤100)n(1≤n≤100)n(1≤n≤100)

输出描述

一方获胜时,输出获胜方手中背面朝上最上方的那张牌的数值。若平局,如果桌面无牌则输出 000,否则输出当前桌面上正面朝上的最上方的那张牌的数值。

样例1

输入

[1,2],[10,12]

输出

12

说明

-甲的牌堆:[1,2][1,2][1,2]

-乙的牌堆:[10,12][10,12][10,12]

-出牌顺序:甲出 111,乙出 101010,甲出 222,乙出 121212,甲无牌可出,乙无余牌,游戏结束,平局。

-桌面牌堆为 [1,10,2,12][1,10,2,12][1,10,2,12]。

-平局,输出桌面牌堆正面朝上最上方牌的数值:121212。

样例2

输入

[1,2],[1,2]

输出

1

说明

-甲的牌堆:[1,2][1,2][1,2]

-乙的牌堆:[1,2][1,2][1,2]

-出牌顺序:

1.甲出 111,剩余 [2][2][2],桌面:[1][1][1]。

2.乙出 111,剩余 [2][2][2],匹配桌面的 111,拿走 [1,1][1,1][1,1],桌面:[],放回乙牌堆:乙牌堆变为 [2,1,1][2,1,1][2,1,1]。

3.乙出 222,剩余 [1,1][1,1][1,1],桌面:[2][2][2]。

4.甲出 222,剩余 [],匹配桌面的 222,拿走 [2,2][2,2][2,2],桌面:[],放回甲牌堆:甲牌堆变为 [2,2][2,2][2,2]。

5.甲出 222,剩余 [2][2][2],桌面: [2][2][2]。

6.乙出 111,剩余 [1][1][1],桌面: [2,1][2,1][2,1]。

7.甲出 222,剩余 [],匹配桌面的 222,拿走 [2,1,2][2,1,2][2,1,2],桌面:[],放回甲牌堆:甲牌堆变为 [2,1,2][2,1,2][2,1,2]。

8.甲出 222,剩余 [1,2][1,2][1,2],桌面:[2][2][2]。

9.乙出 111,剩余[],桌面: [2,1][2,1][2,1]。

10.甲出 111,剩余 [2][2][2],匹配桌面的 111,拿走 [1,1][1,1][1,1],桌面: [2][2][2],放回甲牌堆:甲牌堆变为 [2,1,1][2,1,1][2,1,1]。

11.甲出 222,剩余 [1,1][1,1][1,1],匹配桌面的 222,拿走 [2,2][2,2][2,2],桌面:[],放回甲牌堆:甲牌堆变为 [1,1,2,2][1,1,2,2][1,1,2,2]。

12.甲出 111,剩余 [1,2,2][1,2,2][1,2,2],桌面: [1][1][1]。

13.乙无牌可出,甲还有余牌,甲获胜。

-游戏结束,甲牌堆剩余 [1,2,2][1,2,2][1,2,2],输出: 111。

样例3

输入

[1,2,11,4],[10,12,2,1]

输出

12

说明

-甲的牌堆:[1,2,11,4][1,2,11,4][1,2,11,4]

-乙的牌堆:[10,12,2,1][10,12,2,1][10,12,2,1]

-出牌顺序:

1.甲出 111,剩余 [2,11,4][2,11,4][2,11,4],桌面: [1][1][1]。

2.乙出 101010,剩余 [12,2,1][12,2,1][12,2,1],桌面: [1,10][1,10][1,10]。

3.甲出 222,剩余 [11,4][11,4][11,4],桌面: [1,10,2][1,10,2][1,10,2]。

4.乙出 121212,剩余 [2,1][2,1][2,1],桌面: [1,10,2,12][1,10,2,12][1,10,2,12]。

5.甲出 111111,剩余 [4][4][4],触发 JJJ 特效,拿走 [1,10,2,12,11][1,10,2,12,11][1,10,2,12,11],桌面:[],放回甲牌堆:甲牌堆变为 [4,1,10,2,12,11][4,1,10,2,12,11][4,1,10,2,12,11]。

6.甲出 444,剩余 [1,10,2,12,11][1,10,2,12,11][1,10,2,12,11],桌面: [4][4][4]。

7.乙出 222,剩余 [1][1][1],桌面: [4,2][4,2][4,2]。

8.甲出 111,剩余 [10,2,12,11][10,2,12,11][10,2,12,11],桌面: [4,2,1][4,2,1][4,2,1]。

9.乙出 111,剩余[],匹配桌面的 111,拿走 [1,1][1,1][1,1],桌面: [4,2][4,2][4,2],放回乙牌堆:乙牌堆变为 [1,1][1,1][1,1]。

10.乙出 111,剩余 [1][1][1],桌面: [4,2,1][4,2,1][4,2,1]。

11.甲出 101010,剩余 [2,12,11][2,12,11][2,12,11],桌面: [4,2,1,10][4,2,1,10][4,2,1,10]。

12.乙出 111,剩余[],匹配桌面的 111,拿走 [1,10,1][1,10,1][1,10,1],桌面: [4,2][4,2][4,2],放回乙牌堆:乙牌堆变为 [1,10,1][1,10,1][1,10,1]。

13.乙出 111,剩余 [10,1][10,1][10,1],桌面: [4,2,1][4,2,1][4,2,1]。

14.甲出 222,剩余 [12,11][12,11][12,11],匹配桌面的 222,拿走 [2,1,2][2,1,2][2,1,2],桌面: [4][4][4],放回甲牌堆:甲牌堆变为 [12,11,2,1,2][12,11,2,1,2][12,11,2,1,2]。

15.甲出 121212,剩余 [11,2,1,2][11,2,1,2][11,2,1,2],桌面: [4,12][4,12][4,12]。

16.乙出 101010,剩余 [1][1][1],桌面: [4,12,10][4,12,10][4,12,10]。

17.甲出 111111,剩余 [2,1,2][2,1,2][2,1,2],触发 JJJ 特效,拿走 [4,12,10,11][4,12,10,11][4,12,10,11],桌面:[],放回甲牌堆:甲牌堆变为 [2,1,2,4,12,10,11][2,1,2,4,12,10,11][2,1,2,4,12,10,11]。

18.甲出 222,剩余 [1,2,4,12,10,11][1,2,4,12,10,11][1,2,4,12,10,11],桌面: [2][2][2]。

19.乙出 111,剩余[],桌面: [2,1][2,1][2,1]。

20.甲出 111,剩余 [2,4,12,10,11][2,4,12,10,11][2,4,12,10,11],匹配桌面的 111,拿走 [1,1][1,1][1,1],桌面: [2][2][2],放回甲牌堆:甲牌堆变为 [2,4,12,10,11,1,1][2,4,12,10,11,1,1][2,4,12,10,11,1,1]。

21.甲出 222,剩余 [4,12,10,11,1,1][4,12,10,11,1,1][4,12,10,11,1,1],匹配桌面的 222,拿走 [2,2][2,2][2,2],桌面:[],放回甲牌堆:甲牌堆变为 [4,12,10,11,1,1,2,2][4,12,10,11,1,1,2,2][4,12,10,11,1,1,2,2]。

22.甲出 444,剩余 [12,10,11,1,1,2,2][12,10,11,1,1,2,2][12,10,11,1,1,2,2],桌面: [4][4][4]。

23.乙无牌可出,甲还有余牌,甲获胜。

-游戏结束,甲牌堆剩余 [12,10,11,1,1,2,2][12,10,11,1,1,2,2][12,10,11,1,1,2,2],输出: 121212。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 77ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?