当前位置: 首页 > article >正文

P8700 [蓝桥杯 2019 国 B] 解谜游戏--string与cstring、memset()介绍

P8700 [蓝桥杯 2019 国 B] 解谜游戏--string与cstring

      • 题目
  • 解析
      • 代码

题目

在这里插入图片描述

解析

在这里插入图片描述
借大佬图用用,内中外圈的数量比是1:2:3,所以无论怎么旋转在内圈的一个位置都对应着中圈的两个位置以及外圈的三个位置(这个是固定的)

所以需要我们做的就是判断这几个位置上的绿:红:黄=3:2:1。然后用哈希法记录

从下述的代码中我们可以看见,每次循环完有个重置哈希表的步骤,这里要用到一个函数memset()【#include <cstring>下的一个函数

memset()的主要作用:
i.初始化内存为0(清零):

int arr;
memset(arr, 0, sizeof(arr)); // 将 arr 所有元素初始化为0

ii.设置字符数组的值:

char buffer;
memset(buffer, 'A', 10); // 前10字节设为字符'A'

iii.初始化结构体:

struct Data {
    int id;
    char name;
};
Data data;
memset(&data, 0, sizeof(Data)); // 清零整个结构体

代码

#include <iostream>
#include <vector>
#include <set>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits>  // 包含INT_MAX常量
#include <cctype>
using namespace std;
int t;
string s1, s2, s3;
int flag, q[100];

int main() {
	cin >> t;
	for (int i = 0; i < t; i++) {
		cin >> s1 >> s2 >> s3;
		for (int j = 0; j < 4; j++) {
			q[s3[j]]++, q[s2[j]]++;
			q[s2[j + 4]]++;
			q[s1[j]]++, q[s1[j + 4]]++, q[s1[j + 8]]++;
			if (q['G'] != 3 || q['R'] != 2 || q['Y'] != 1) {
				cout << "NO" << endl;
				flag = 1;
				memset(q, 0, sizeof q);
				break;
			}
			memset(q, 0, sizeof q);
		}
		if (!flag) {
			cout << "YES" << endl;
		}
		flag = 0;
	}
	return 0;
}

http://www.kler.cn/a/580311.html

相关文章:

  • Unity Job系统详解原理和基础应用处理大量物体位置
  • 24.Harmonyos Next仿uv-ui 组件 NumberBox 步进器组件步长设置
  • Android GMS集成
  • pytorch下载速度慢?试试离线安装
  • Yashan DB 实例管理
  • 蓝桥备赛(12)- 顺序表和 vector(上)
  • 《C#上位机开发从门外到门内》2-1:串口通信(UART)
  • 【linux】【文件】文件权限基础
  • 03 2个路由器构造三个子网相互访问, 3个路由器构造5个子网相互访问
  • PDF处理控件Aspose.PDF,如何实现企业级PDF处理
  • 测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试
  • 财务会计域——合并报表系统设计
  • RedisLimiter 限流器
  • 机器学习——逻辑回归实战2——预测拖欠款
  • Java jar包后台运行方式详解
  • 《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急设备智能化升级路径与落地实践
  • 服务器python项目部署
  • NineData 社区版正式上线,支持一键本地化部署
  • FPGA时序约束的几种方法
  • OpenCV实现视频背景提取