栈与队列,小猫钓鱼
来源:互联网 发布:成都五轴编程招聘 编辑:程序博客网 时间:2024/05/17 03:08
//小哼和小哈玩小猫钓鱼,每人先摸6张牌,小哼先拿牌,然后依次出牌,若牌与桌上的相同则将出的牌放在牌尾,并将之间的牌放入手牌的末尾,否则将牌打至桌上,问谁能获胜。
#include <cstdio>#include <queue>#include <stack>using namespace std; int main() { queue<int>q1; queue<int>q2; stack<int>s; int i,j,a,n,temp; int vis[10]={0};//vis数组保存1~9的牌有没有在桌上(栈中),不可能在栈中出现两张相同的牌,否则早就被钓走了 for (i=1;i<=6;i++) { scanf("%d",&a); q1.push(a); }//小哼拿六张牌 for (i=1;i<=6;i++) { scanf("%d",&a); q2.push(a); }//小哈拿六张牌 while((!q1.empty())&&(!q2.empty()))//小哼和小哈手上必须都有牌(栈都不为空),否则有一个没牌了,游戏结束 { temp=q1.front(); q1.pop();//不管赢牌输牌都要把牌先拿出来(如果赢牌就要放在最后,输牌就要放在桌上,反正都不会在这了~~) if (vis[temp]==1)//如果桌上有这张牌 { q1.push(temp);//先把这张牌放入小哼的排尾,接下来就是拿桌上的牌 while(s.top()!=temp)//这里注意桌上的大小为temp的牌只可能有一张~~,所以只要栈顶不为temp即可 { q1.push(s.top());//把桌上的第一张牌拿走放在小哼的排尾 s.pop(); } vis[temp]=0;//取消标记,桌上没有temp牌了~~ } if (vis[temp]==0)//如果桌上没有这张牌,别忘了把这张牌放在桌上(之前不要放是因为赢牌了) { s.push(temp); vis[temp]=1;//打上标记,temp牌桌上有了 } //以上都为小哼的操作 temp=q2.front(); q2.pop(); if (vis[temp]==1) { q2.push(temp); while(s.top()!=temp) { q2.push(temp); s.pop(); } vis[temp]=0; } if (vis[temp]==0) { s.push(temp); vis[temp]=1; } } if (q1.empty()) printf("小哈获胜\n");//小哈手中还有余牌 else printf("小哼获胜\n");//小哼手中还有余牌 return 0;}
0 0
- 栈与队列,小猫钓鱼
- 小猫钓鱼--栈和队列的使用
- 纸牌游戏——小猫钓鱼 栈与队列合用实现
- 寒假算法第三编——小猫钓鱼游戏(栈与队列综合问题)
- 栈和队列的实际应用:小猫钓鱼
- 小猫钓鱼
- 纸牌游戏-小猫钓鱼(队列和栈的基本应用)
- 小猫钓鱼偶感!
- 纸牌游戏-小猫钓鱼
- 纸牌游戏--小猫钓鱼
- 小猫钓鱼游戏java实现
- [数据结构]纸牌游戏——小猫钓鱼
- C语言—算法—小猫钓鱼
- 2.3纸牌游戏——小猫钓鱼
- 算法入门——小猫钓鱼纸牌
- 纸牌游戏——小猫钓鱼
- 纸牌游戏——小猫钓鱼
- 学会了钓鱼的小猫来到了软件开发公司...
- Eclipse maven plugin 插件 安装 和 配置
- androi实现自定义标题栏、自定义光标
- Java中获取文件大小的正确方法
- 图片缓存框架解析与设计
- MyEcplise8.5 Patch
- 栈与队列,小猫钓鱼
- 糊糊悟道--国家政策到底是什么?
- hdu 5225 Tom and permutation
- eclipse中设置@author为自己的名字
- 使用tinyxml生成xml
- error: only position independent executables (PIE) are supported.
- 网络层协议:IP(Internet Protocol)的分类与子网
- AutoTest--HTML/XML/XPath基础及辅助工具
- Maven学习(十一)----Maven深入学习(一)- 坐标