码迷,mamicode.com
首页 > 其他好文 > 详细

占卜DIY

时间:2019-07-21 13:52:26      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:操作   return   for   activity   space   目的   har   char   ref   

占卜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

标签:操作   return   for   activity   space   目的   har   char   ref   

原文地址:https://www.cnblogs.com/a1b3c7d9/p/11220823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!