占卜DIY

Posted a1b3c7d9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了占卜DIY相关的知识,希望对你有一定的参考价值。

占卜DIY

有一副牌(去掉大小王),分成13堆(有序的),每堆牌的牌种已经给出,现在进行以下操作

  1. 从第13堆牌中拿出一张牌点数为a,如果第13堆牌中没有牌了,停止操作
  2. 到达第a堆牌,拿出第a堆牌牌底的牌
  3. 如果a点数为13,就丢掉,重复操作1
  4. 否则重复操作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的主要内容,如果未能解决你的问题,请参考以下文章

占卜DIY 模拟

解题报告 『占卜DIY(模拟)』

CH0802 占卜DIY

TYVJ1424-占卜DIY

教你学会塔罗免费占卜十八招

小L的占卜