占卜DIY
Posted a1b3c7d9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了占卜DIY相关的知识,希望对你有一定的参考价值。
有一副牌(去掉大小王),分成13堆(有序的),每堆牌的牌种已经给出,现在进行以下操作
- 从第13堆牌中拿出一张牌点数为a,如果第13堆牌中没有牌了,停止操作
- 到达第a堆牌,拿出第a堆牌牌底的牌
- 如果a点数为13,就丢掉,重复操作1
- 否则重复操作2
询问
解
模拟题,只提一个要点,就是1,3,4可以合并成一步操作,因为牌13正好与第13堆牌对应,这是题目的隐含条件,并非一定要照着以上步骤一个一个打,于是设初始摸到牌13,然后循环操作2,终止条件为第13堆牌没牌了,就不需要代码又臭又长了。
参考代码:
#include <iostream>
#include <cstdio>
#define il inline
#define ri register
using namespace std;
char to[257];
int p[14][5],lp[14],b[14];
il void get(char&);
int main()char c;
for(int i(2);i<10;++i)to[i+48]=i;to['A']=1;
to['0']=10,to['J']=11,to['Q']=12,to['K']=13;
for(int i(1),j;i<=13;++i)
for(j=1,lp[i]=4;j<=4;++j)
get(c),p[i][j]=to[c];int q(13);
do q=p[q][lp[q]--],++b[q];while(lp[13]>=0);
int ans(0);for(int i(1);i<13;++i)if(b[i]==4)++ans;
printf("%d",ans);
return 0;
il void get(char &c)
while(c=getchar(),c==' '||c=='\n'||c=='\r');
以上是关于占卜DIY的主要内容,如果未能解决你的问题,请参考以下文章