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

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

题目背景

题目描述

小明正在玩一款解谜游戏。谜题由 24 24 24 根塑料棒组成,其中黄色塑料棒 4 4 4 根,红色 8 8 8 根,绿色 12 12 12 根 (后面用 Y 表示黄色、R 表示红色、G 表示绿色)。初始时这些塑料棒排成三圈,如上图所示,外圈 12 12 12 根,中圈 8 8 8 根,内圈 4 4 4 根。

小明可以进行三种操作:

  1. 将三圈塑料棒都顺时针旋转一个单位。例如当前外圈从 0 0 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么顺时针旋转一次之后,外圈、中圈、内圈依次变为:GYRYGRYGRGGGYRGRGGRRRGGG
  2. 将三圈塑料棒都逆时针旋转一个单位。例如当前外圈从 0 0 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么逆时针旋转一次之后,外圈、中圈、内圈依次变为:RYGRYGRGGGGYGRGGRRYRGGRG
  3. 将三圈 0 0 0 点位置的塑料棒做一个轮换。具体来说:外圈 0 0 0 点塑料棒移动到内圈 0 0 0 点,内圈 0 0 0 点移动到中圈 0 0 0 点,中圈 0 0 0 点移动到外圈 0 0 0 点。例如当前外圈从 0 0 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么轮换一次之后,外圈、中圈、内圈依次变为:RRYGRYGRGGGGGGRGGRRYYGGR

小明的目标是把所有绿色移动到外圈、所有红色移动中圈、所有黄色移动到内圈。给定初始状态,请你判断小明是否可以达成目标?

输入格式

第一行包含一个整数 T T T,代表询问的组数。 ( 1 ≤ T ≤ 100 ) (1 \le T \le 100) (1≤T≤100)。

每组询问包含 3 3 3 行:

第一行包含 12 12 12 个大写字母,代表外圈从 0 0 0 点位置开始顺时针每个塑料棒的颜色。

第二行包含 8 8 8 个大写字母,代表中圈从 0 0 0 点位置开始顺时针每个塑料棒的颜色。

第三行包含 4 4 4 个大写字母,代表内圈从 0 0 0 点位置开始顺时针每个塑料棒的颜色。

输出格式

对于每组询问,输出一行 YES 或者 NO,代表小明是否可以达成目标。

样例 #1

样例输入 #1

复制代码
2
GYGGGGGGGGGG
RGRRRRRR
YRYY
YGGGRRRRGGGY
YGGGRRRR
YGGG

样例输出 #1

复制代码
YES
NO

提示

蓝桥杯 2019 年国赛 B 组 H 题。

确保这六根棍有三根绿色,两根红色,一根黄色

cpp 复制代码
#include <iostream>
using namespace std;
#include <bits/stdc++.h>

int t;
string a,b,c;
int cnt[110];
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>a>>b>>c;
		bool flag=1;//有两组 如果定义在外面,flag的值会在第一轮被赋予0 然后一直不会改变
	   for(int i=0;i<4;i++)//通过遍历内部的小圈
	   	{
	   		
	   		memset(cnt,0,sizeof(cnt));//初始化桶
		++cnt[a[i]],++cnt[b[i]],++cnt[c[i]];
		++cnt[b[i+4]],++cnt[a[i+4]],++cnt[a[i+8]];
		if(cnt['G']!=3||cnt['R']!=2||cnt['Y']!=1)//如果这6个固定的圈不符合要求 则一定过不了
		{
			flag=0;
		  break;
		}
		
	  }
		
		
	cout<<(flag?"YES":"NO")<<'\n';//判断

	}	


	return 0;
}
相关推荐
前端_学习之路28 分钟前
javaScript--数据结构和算法
javascript·数据结构·算法
weixin_428498491 小时前
使用HYPRE库并行装配IJ稀疏矩阵指南: 矩阵预分配和重复利用
算法·矩阵
雾削木3 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
__lost3 小时前
小球在摆线上下落的物理过程MATLAB代码
开发语言·算法·matlab
mit6.8244 小时前
[Lc_week] 447 | 155 | Q1 | hash | pair {}调用
算法·leetcode·哈希算法·散列表
jerry6096 小时前
优先队列、堆笔记(算法第四版)
java·笔记·算法
勤劳的牛马6 小时前
📚 小白学算法 | 每日一题 | 算法实战:加1!
算法
Epiphany.5566 小时前
基于c++的LCA倍增法实现
c++·算法·深度优先
一只码代码的章鱼6 小时前
学习笔记2(Lombok+算法)
笔记·学习·算法
jerry6097 小时前
c++流对象
开发语言·c++·算法