小猫钓鱼——栈、队列的应用(C++)

一、游戏规则:

将一副扑克牌(假设牌面只有1~9)平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌子上,然后小哈也拿出手中的第一张扑克牌,放在小哼刚打出的扑克牌的上面,就这样两人交替出牌。出牌时,如果某人打出的扑克牌与桌面上某张扑克牌的牌面相同,即将两张相同的扑克牌及中间所夹的牌全部取走,依次放在自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。

假如游戏开始时,小哼手中有6张牌,顺序为2、4、1、2、5、6,小哈手中也有6张牌,顺序为3、1、3、5、6、4,最终谁会获胜呢?

请编写一个程序来自动判断谁将获胜。

二、游戏分析:

1.手中的牌构成一个队列。

2.出牌和赢牌对应出队和入队两个操作。

3.桌子相当于一个栈,每打出一张牌放到桌子上相当于入栈。

游戏开始:

1.小哼先出牌。小哼亮出一张牌t,检查桌面上是否存在相同的牌面。若不存在,则此轮没有赢牌;否则此轮可以赢牌。

用数组book标记桌面上是否存在相同的牌面。

若桌面上不存在相同的牌面,则小哼出牌(t出队),将t放到桌面上(入栈),进行标记。

若桌面上存在相同的牌面,则先把t放到手中牌的末尾(先出队,再入队),然后从桌面上把压在与t相同牌面之上的扑克牌依次取走,放入手中牌的末尾,最后从桌面上把压在与t相同牌面的牌也收入手中,同时进行标记。

2.游戏如何结束。只要两人中有一人的牌用完了,游戏就结束了。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值