P8700 [蓝桥杯 2019 国 B] 解谜游戏 题解

· · 题解

这道题纯纯思维题,找好规律。

题意:

打乱后还原外,中,内圈的形式。

思路:

初始化三个桶,用三个桶(外,中,内)找完规律累加就完了,再来判断每一次轮回,零点对应外,中,内圈的颜色中,是否绿色有 3 个,红色有 2 个,黄色有 1 个,如是的话, flag 返回 true ,最后判断一下 flag ,输出 YES or NO 。

AC code

#include <bits/stdc++.h>
using namespace std;
int m[1005];
int t; 
string a,b,c; //定义三个字符串,表示外,中,内圈。 
int main(){
    cin>>t;
    while(t--){
        cin>>a>>b>>c;
        bool flag=true;   //来随之字符串是否满足条件,判断输出啥子
        memset(m,0,sizeof(m));
            for(int i=0;i<4;i++){ //字符串下标为0 
            memset(m,0,sizeof(m));//初始化 
            //累加: 
            m[a[i]]++;
            m[b[i]]++;
            m[c[i]]++;
            m[a[i+4]]++;
            m[b[i+4]]++;
            m[a[i+8]]++;
            if(m['G']!=3||m['R']!=2||m['Y']!=1){//判断是否满足 ,如不满足,flag返回false 
                flag = false;
                break;
            }
        }
        //随flag变化而输出 
        if(flag) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0; 
}

撒花完结!!