• NOIP模拟赛 麻将


    【题目描述】

    众所周知,麻将是我们国家的国粹。这段时间,小D也迷上了麻将这个老少皆宜的游戏。
    小D觉得这些不同规则的麻将太麻烦了,所以他集合了很多种麻将规则创造出了一套D麻将。下面是D麻将的几个特点:
    D麻将中有三种花色,万(w)索(s)筒(t),每个花色下有9张牌,每张牌有4个。
    D麻将中没有杠牌,只有顺子和刻子。顺子的含义是相同花色的三张连在一起的牌型(比如说2w3w4w);刻子的含义是三张花色和数字都相同的牌型(比如说2s2s2s)。
    D麻将的胡牌的时候手上往往有14张牌,14张牌凑成了四个顺子或刻子和两张一样的牌做雀头就可以胡牌了。
    D麻将胡牌的时候有很多种不同的牌型,不同的牌型会有不一样的番数。你的一种牌型可能满足了多个加番牌型,满足多个的情况下就把所有满足的牌型的番数全部加起来计算。
    D麻将中有如下牌型可以加番:
    平和(一番):4个顺子组成;
    一杯口(一番):同花色同数值的顺子两组;
    混全带幺九(一番):全部的顺子,刻子中都含有数字1或9;
    三色同顺(一番):三种花色同数值的顺子各一组;
    一气贯通(两番):由同花色一至九组成顺子;
    对对和(两番):四组刻子;

    断幺九(两番):胡牌的时候手上只有2-8的数字组成的牌型;

    一色三顺(三番):同花色同数值顺子三组;
    两杯口(三番):由两组不同的一杯口组成;
    三色同刻(四番):三种花色同数值的刻子各一组;

    清老头(五番):全部由1或9的刻子和雀头组成;
    清一色(七番):全部由同一种花色的顺子,刻子及雀头组成;
    比如说一个牌型为1s2s3s4s5s6s7s8s9s1s2s3s9s9s的牌,它满足了平和、一杯口、一气贯通、清一色四个牌型,所以它的番数是10番。
    小D希望为D麻将做一个程序来帮忙判断这个牌型的番数是多少。

    【输入格式】

    输入第一行一个测试组数T。
    接下来T行每行一个字符串s,表示需要判断番数的牌型。length(s)=28

    【输出格式】

    输出有T行每行一个整数,表示判断牌型的番数为多少。

    【样例输入】

    1
    1s2s3s4s5s6s7s8s9s1s2s3s9s9s

    【样例输出】

    10

    这种简单粗暴的强模拟题,上次写USACO的麻将就写的想***,这次写到一半就想吐了。。。

    不行,我要留坑(弃坑)

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 int T;
     6 int mj[14],C[30];
     7 
     8 int convert(int i,char ch)
     9 {
    10     int t;
    11     switch(ch)
    12     {
    13         case 'w':
    14             t=0;
    15             break;
    16         case 's':
    17             t=9;
    18             break;
    19         case 't':
    20             t=18;
    21     }
    22     return t+i;
    23 }
    24 
    25 bool work1(int dep)
    26 {
    27     for(int i=0;i<=18;i+=9)
    28         for(int j=1;j<=7;j++)
    29         {
    30             if(C[i+j]>0&&C[i+j+1]>0&&C[i+j+2]>0)
    31             {
    32                 if(dep>=3) return true;
    33                 C[i+j]--;C[i+j+1]--;C[i+j+2]--;
    34                 if(pinghe(dep+1)) return true;
    35                 C[i+j]++;C[i+j+1]++;C[i+j+2]++;
    36             }
    37         }
    38     return false;
    39 }
    40 
    41 bool work2()
    42 {
    43     for(int i=1;i<=7;i++)
    44     {
    45         if(C[i]>0&&C[i+1]>0&&C[i+2]>0&&C[i+9]>0&&C[i+9+1]>0&&C[i+9+2]>0) return true;
    46         if(C[i]>0&&C[i+1]>0&&C[i+2]>0&&C[i+18]>0&&C[i+18+1]>0&&C[i+18+2]>0) return true;
    47         if(C[i+9]>0&&C[i+9+1]>0&&C[i+9+2]>0&&C[i+18]>0&&C[i+18+1]>0&&C[i+18+2]>0) return true;
    48     }
    49     return false;
    50 }
    51 
    52 bool work3()
    53 {
    54 
    55 }
    56 
    57 int main()
    58 {
    59     cin>>T;
    60     while(T--)
    61     {
    62         int n;char ch;
    63         memset(C,0,sizeof(C));
    64         for(int i=0;i<14;i++)
    65         {
    66             scanf("%d%c",&n,&ch);
    67             mj[i]=convert(n,ch);
    68         }
    69         for(int i=0;i<14;i++)
    70             C[mj[i]]++;
    71     }
    72     return 0;
    73 }
  • 相关阅读:
    兼容性问题--HTML+CSS
    限时购--倒计时⏳
    如何把项目上传到GitHub上
    转载:java面试题(一)
    转载:php excel 的处理
    转载:Angular的filter总结
    转载:Think in AngularJS:对比jQuery和AngularJS的不同思维模式(大漠穷秋)
    转载:对比Angular/jQueryUI/Extjs:没有一个框架是万能的
    在eclipse中添加svn插件
    最近的一些事儿
  • 原文地址:https://www.cnblogs.com/InWILL/p/6013861.html
Copyright © 2020-2023  润新知