纸牌游戏——小猫钓鱼
来源:互联网 发布:高街风格 男生知乎 编辑:程序博客网 时间:2024/04/29 02:25
星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。
#include <stdio.h>#include <stdlib.h>#include<string.h>struct queue{ int data[100]; int head; int tail;};struct stack{ int data[100]; int top;};int main(){ struct queue q1; struct queue q2; struct stack s; int n; int i; int t; int book[10]; memset(book,0,sizeof(book));//初始化标记数组,标记桌子上的牌 s.top =0;//队和栈初始化 q1.head=1; q1.tail=1; q2.head=1; q2.tail=1; printf("请输入牌的个数: "); scanf("%d",&n); for(i=1; i<=n; i++) { scanf("%d",&q1.data[q1.tail]);//q1的牌 q1.tail++; } for(i=1; i<=n; i++)//q2的牌 { scanf("%d",&q2.data[q2.tail]); q2.tail++; } while(q1.head<q1.tail && q2.head<q2.tail) { t = q1.data[q1.head];//出第一张牌 if(book[t]==0) { //q1这轮没有赢牌 q1.head++; s.top++; s.data[s.top]=t;//往栈里放牌 book[t]=1;//说明桌子上有刚才放的那张牌 } else { //q1这轮赢牌 q1.head++; q1.data[q1.tail]=t;//把刚出去的那张牌收回来并放在手里的牌尾 q1.tail++; while(s.data[s.top]!=t) { //收取两张相同牌之间的牌 book[s.data[s.top]]=0;//取消标记 q1.data[q1.tail] = s.data[s.top]; q1.tail++; s.top--; } //收回牌面为t的牌 book[s.data[s.top]]=0; q1.data[q1.tail ]=s.data[s.top]; q1.tail++; s.top--; } if(q1.head==q1.tail) break;//q1的牌已经打完,下面同理进行q2的操作 t = q2.data[q2.head];//出第一张牌 if(book[t]==0) { //q2这轮没有赢牌 q2.head++; s.top++; s.data[s.top]=t;//往栈里放牌 book[t]=1;//说明桌子上有刚才放的那张牌 } else { //q2这轮赢牌 q2.head++; q2.data[q2.tail]=t;//把刚出去的那张牌收回来并放在手里的牌尾 q2.tail++; while(s.data[s.top]!=t) { //收取两张相同牌之间的牌 book[s.data[s.top]]=0;//取消标记 q2.data[q2.tail] = s.data[s.top]; q2.tail++; s.top--; } //收回牌面为t的牌 book[s.data[s.top]]=0; q2.data[q2.tail ]=s.data[s.top]; q2.tail++; s.top--; } } if(q2.head ==q2.tail) { printf("q1赢了!\n"); printf("q1现在手中的牌是: "); for(i=q1.head; i<=q1.tail-1; i++) printf(" %d",q1.data[i]); if(s.top>0) { printf("\n桌上的牌是: "); for(i=1; i<=s.top; i++) printf(" %d",s.data[i]); } else printf("桌子上没有牌!\n"); } else { printf("q2赢了!\n"); printf("q2现在手中的牌是: "); for(i=q2.head; i<=q2.tail-1; i++) printf(" %d",q2.data[i]); if(s.top>0) { printf("\n桌上的牌是: "); for(i=1; i<=s.top; i++) printf(" %d",s.data[i]); } else printf("桌子上没有牌!\n"); } return 0;}
阅读全文
0 0
- [数据结构]纸牌游戏——小猫钓鱼
- 2.3纸牌游戏——小猫钓鱼
- 纸牌游戏——小猫钓鱼
- 纸牌游戏——小猫钓鱼
- 纸牌游戏-小猫钓鱼
- 纸牌游戏--小猫钓鱼
- 纸牌游戏——小猫钓鱼(阿哈!算法)
- 啊哈!算法—纸牌游戏—小猫钓鱼
- 算法入门——小猫钓鱼纸牌
- 纸牌游戏——小猫钓鱼 栈与队列合用实现
- java实现纸牌游戏-小猫钓鱼算法
- 纸牌游戏-小猫钓鱼(队列和栈的基本应用)
- 小猫钓鱼游戏java实现
- C语言—算法—小猫钓鱼
- 寒假算法第三编——小猫钓鱼游戏(栈与队列综合问题)
- 小猫钓鱼
- 小猫钓鱼偶感!
- hdu 2209——翻纸牌游戏
- odoo10创建calendarView(日历视图)
- python练习6 自动修正juzi
- shell脚本一键部署环境
- bzoj3156: 防御准备(斜率优化+Dp)
- XTU1214 A+B IV
- 纸牌游戏——小猫钓鱼
- 匈牙利算法 素数间隔
- 大数据学习33:logstash 和 kibanba 安装以及ELK的联调记录
- 在CentOS下使用Let's Encrypt获取证书
- Java集合框架上机练习题编写一个Book类
- 从web项目中解析xml文件出现(\src\bean.xml (系统找不到指定的路径。))
- Centos(Redhat)JavaEE环境搭建(二)Tomcat安装配置
- C#回调函数的简单讲解与应用例子(最简单讲解,大神绕道)
- 160