俏兔子大战傻贼鹰-Easy Version

丁姐姐喜欢Fibonacci

https://ac.nowcoder.com/acm/contest/1838/A

思路:
(1)如果14张牌里面有定缺牌,直接输出no就可以了
(2)如果没有定缺牌,就将牌存入map数组里面,当时map用的是string->int,就是记录数量
(3)最后对map进行一次遍历,记录两个的和三个的各自出现的次数,如果满足题目给出的胡牌条件,就输出yes,else输出no

(但凡当时有点脑子,开三个一维数组不就好了,或者开一个二维数组都是可以做的,开个map也是服了当时自己的脑思路了,可能当时刚学STL,感觉什么都可以用STL做)

这道题是19年11月17号新生赛中的一道题,看了看以前的代码,感觉自己那时候真的是好青涩,代码都写的粉***嫩的,从我正式接触C语言,C++,各种算法,到那时候的新生赛,应该还没有两个月,在ACM集训队中真的可以学到好多,但也会失去很多,我稍微修改了一下以前的代码,加了一点注释,记录一下当时的青涩吧,代码如下:

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stdlib.h>
typedef long long ll;
using namespace std;

int main ()
{
    int T;
    char s;
    while(cin >> T >> s) //T为询问次数,s为定缺牌
    {
        char a[29]; //存14张牌,每张牌占两个位置,分别表示数字(1~9)和类别(筒条万)(这里开个string不香吗,或者数组也可以开大点,非要卡这个界限~~)

        for (int j=1;j<=T;j++)
        {
            cin >> a;
            int flag=1;
            for (int i=0;i<=27;i++) //如果a中存在定缺牌直接输出“No”
            {

                if(a[i]==s)
                {
                    flag=0;
                    break;
                }
            }

            if(flag==0)
            {
                cout << "No" << endl;
                continue;
            }

            map<string,int>mp;  //当时的惊天妙手~~(自己都不好意思了)
            mp.clear();

            for (int i=0;i<=26;i+=2)
            {
                string a2;
                char bb[2]; //存牌
                bb[0]=a[i];
                bb[1]=a[i+1];
                a2+=bb; //为了将字符转为字符串我也是费心了,其实如果前面用的string,这里用字符串的substr()函数就很简单了;
                mp[a2]++;
            }

            int er=0;
            int san=0;

            for (map<string,int>::iterator it=mp.begin() ; it!=mp.end() ; it++) //因为一共就那么几个变量,所以绝对不会超时,但是它会按照排好序的顺序计算的,比如2T肯定在1T的前面。
            {
                if(it->second==2)er++;
                if(it->second==3)san++;
            }

            if( (er==1&&san==4) || er==7)cout << "Yes" << endl;
            else cout << "No" << endl;

        }
    }

    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务