TYVJ1424-占卜DIY
Posted -chamgin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TYVJ1424-占卜DIY相关的知识,希望对你有一定的参考价值。
题目有点长,对于样例最好拿张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[14]; char now,nxt; int vis[233][233],k,hath[233]; void print() { for(int i=1;i<=13;++i){ for(int j=0;j<4;++j) cout<<que[i][j]<<‘ ‘; cout<<endl; } cout<<"******"<<endl; } int main() { for(int i=1; i<=13; ++i) for(int j=0; j<4; ++j) { char x; cin>>x; que[i].push_back(x); } while(k<4) { now=que[13][k]; nxt=‘^‘; while(now!=‘K‘) { //vis[now-‘0‘][now-‘0‘]=1; //cout<<now<<‘ ‘<<nxt<<endl; switch(now) { case ‘A‘: que[1].push_front(now); hath[1]++; nxt=que[1].back(); que[1].pop_back(); break; case ‘J‘: que[11].push_front(now); hath[11]++; nxt=que[11].back(); que[11].pop_back(); break; case ‘Q‘: que[12].push_front(now); hath[12]++; nxt=que[12].back(); que[12].pop_back(); break; case ‘0‘: que[10].push_front(now); hath[10]++; nxt=que[10].back(); que[10].pop_back(); break; default: que[now-‘0‘].push_front(now); hath[now-‘0‘]++; nxt=que[now-‘0‘].back(); que[now-‘0‘].pop_back(); break; } now=nxt; } //cout<<"***"<<k+1<<endl; //print(); ++k; } int ans=0; for(int i=1;i<=12;++i) ans+=hath[i]==4; cout<<ans<<endl; return 0; }
以上是关于TYVJ1424-占卜DIY的主要内容,如果未能解决你的问题,请参考以下文章