TYVJ1424-占卜DIY
2024-10-14 15:48:52
题目有点长,对于样例最好拿张A4纸模拟写一遍。
可以发现程序一定不会死循环,因为每种牌都是4张,而死循环的条件是某种牌有5张然后你拿了又放进去。如果写出来死循环了,那就是写不对了。
有几点可能是需要注意的:
1.A牌就是1,不要把A写成11,然后发现一共56张牌怎么回事。。
2.最好再开个变量nxt记录下一张拿到的牌,只用一个变量记录当前的牌很容易写错又发现不出来。
3.最后统计多少对就是一共有多少牌翻了4次
虽然写了一个早上但幸好是1A,贡献了自己1S~
代码如下:
#include <iostream>
#include <queue>
using namespace std;
typedef long long ll; deque<char> que[];
char now,nxt;
int vis[][],k,hath[];
void print()
{
for(int i=;i<=;++i){
for(int j=;j<;++j)
cout<<que[i][j]<<' ';
cout<<endl;
}
cout<<"******"<<endl;
}
int main() {
for(int i=; i<=; ++i)
for(int j=; j<; ++j) {
char x;
cin>>x;
que[i].push_back(x);
}
while(k<) {
now=que[][k];
nxt='^';
while(now!='K') {
//vis[now-'0'][now-'0']=1;
//cout<<now<<' '<<nxt<<endl;
switch(now) {
case 'A':
que[].push_front(now);
hath[]++;
nxt=que[].back();
que[].pop_back();
break;
case 'J':
que[].push_front(now);
hath[]++;
nxt=que[].back();
que[].pop_back();
break;
case 'Q':
que[].push_front(now);
hath[]++;
nxt=que[].back();
que[].pop_back();
break; case '':
que[].push_front(now);
hath[]++;
nxt=que[].back();
que[].pop_back();
break;
default:
que[now-''].push_front(now);
hath[now-'']++;
nxt=que[now-''].back();
que[now-''].pop_back();
break;
}
now=nxt;
}
//cout<<"***"<<k+1<<endl;
//print();
++k;
}
int ans=;
for(int i=;i<=;++i)
ans+=hath[i]==;
cout<<ans<<endl; return ;
}
最新文章
- lua OOP实现对象的链式调用
- java中String byte HexString的转换
- Cheatsheet: 2014 09.01 ~ 09.30
- dig out secrets beneath AirSig
- POJ3313 【随便写了个spfa就一A了,嗨皮】
- SQL语句表名或者字段名和保留字冲突解决方法
- 【开发技术】refactor 重构----实现文件改名
- 1.12 dict 字典表
- Eclipse目录实解
- JDK(java development kit java开发工具包)的安装
- 为什么要学习socket
- bzoj3451 Normal
- Java综合高级篇
- Geth命令用法-参数详解 and 以太坊源码文件目录
- 通过Roslyn构建自己的C#脚本(更新版)(转)
- MFC中开发ocx控件,html容器收不到ocx的事件Event
- Ubuntu Grub 配置跟新
- 【线段树分治】【P5227】 [AHOI2013]连通图
- 关于iFrame特性总计和iFrame跨域解决办法
- JSON:JavaScript 对象表示法