【CCF】第30次csp认证——202305-1重复局面

news2025/4/6 12:33:49

202305-1重复局面:

问题描述

国际象棋每一个局面可以用大小为 8×8 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 kqrbnp 表示,其中大写字母对应白方、小写字母对应黑方。棋盘上无棋子处用字符 * 表示。两个字符数组的每一位均相同则说明对应同一局面。

现已按上述方式整理好了每步棋后的局面,试统计每个局面分别是第几次出现。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数n,表示这盘棋总共有 n步。

接下来 8×n 行,依次输入第 1 到第 n 步棋后的局面。具体来说每行包含一个长度为 8 的字符串,每 8 行字符串共 64 个字符对应一个局面。

输出格式

输出到标准输出中。

输出共 n 行,每行一个整数,表示该局面是第几次出现。

样例输入

8
********
******pk
*****r*p
p*pQ****
********
**b*B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
********
******pk
******rp
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*

样例输出

1
1
1
1
1
2
2
1

样例说明

第 6、7 步后的局面分别与第 2、3 步后的局面相同。第 8 步后的局面与上图相对应。

子任务

输入数据满足 n ≤100。

提示

判断重复局面仅涉及字符串比较,无需考虑国际象棋实际行棋规则。

题解:

#include <bits/stdc++.h>
using namespace std;
int n;
char pieces[64];
map<string, int> status_map;
int main()
{
	cin >> n;
	for (int i=0;i<n;i++)  
	{
		for (int j=0;j<64;j++)  cin >> pieces[j];
		if (status_map.count(pieces))  
		{
			status_map[pieces] ++;
		}
		else 
		{
			status_map[pieces] = 1;
		}
		cout << status_map[pieces] << endl;
	}
	return 0;
}

解析:

map<string, int> status_map; // 声明一个映射(map)容器status_map,用于存储棋子状态和对应的出现次数

if (status_map.count(pieces)) // 判断以pieces为键是否已经存在于status_map中
    {
        status_map[pieces] ++; // 如果存在,则将对应的值加1
    }
    else
    {
        status_map[pieces] = 1; // 如果不存在,则将键pieces插入到status_map中,并将对应的值设置为1
    }

题解中涉及到的知识点:C++常见容器一网打尽_c++容器

除去题目背景的意思,即记录输入的每一个字符串是第几次出现并在最后输出次数,可以用map容器记录每一个64位的字符串并判断是否已经存入map中来更新次数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1016776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ESP32 IDF+Vscode]蓝牙配网后采用上传温湿度数据至阿里云(MQTT协议)

阿里云平台的设置 参考文章&#xff1a; http://t.csdn.cn/RzLGqhttp://t.csdn.cn/RzLGq Blufi配网 1.简介 BluFi 是一款基于蓝牙通道的 Wi-Fi 网络配置功能&#xff0c;适用于 ESP32。它通过安全协议将 Wi-Fi 配置和证书传输到 ESP32&#xff0c;然后 ESP32 可基于这些信…

OpenGL超级宝典(第五版)疑难点汇总解析

《OpenGL超级宝典(第五版&#xff09;》如下&#xff1a; 1. 在该书的第1章的Block例子中用到了平面阴影投射矩阵&#xff0c;关于该矩阵的推导&#xff0c;参见&#xff1a; OpenGL: 平面阴影投射矩阵的推导 2. 在该书的第8章的pix_buffs例子中用到了正交投影矩阵的推导过程…

腾讯mini项目-【指标监控服务重构】2023-08-23

今日已办 进度和问题汇总 请求合并 feature/venus tracefeature/venus metricfeature/profile-otel-baserunner-stylebugfix/profile-logger-Syncfeature/profile_otelclient_enable_config 完成otel 开关 trace-采样metrice-reader 已经都在各自服务器运行&#xff0c;并接入…

Datagrip 下载、安装教程,详细图文,亲测有效

文章目录 前言1. 下载2. 安装3 DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境&#xff0c;支持 MySQL 和 PostgreSQL&#xff0c;Microsoft SQL Server 和 Oracle&#xff0c;Sybase&#xff0c;DB2&#xff0c;SQLite&#xff0c;还有 Hyp…

RocketMQ快速实战以及集群架构详解

文章目录 1、MQ简介1.1 、定义1.2 、作用 2、RocketMQ产品特点2.1、RocketMQ介绍2.2 、RocketMQ特点 1、MQ简介 1.1 、定义 ​ MQ&#xff1a;MessageQueue&#xff0c;消息队列。是在互联网中使用非常广泛的一系列服务中间件。 这个词可以分两个部分来看 一是Message&#…

SmartApi使用说明

缘起&#xff1a; 搞移动开发十多年了&#xff0c;接口、数据、数据模型、以及数据边界值的处理是需要团队协作解决&#xff0c;而这方面恰恰是总容易导致bug难修复的地方。而一款好用的api调试工具对于后端、前端、测试都是必须必的掌握熟练使用&#xff0c;Api就像人体的血管…

开发、测试、生产环境

开发环境&#xff08;Development Environment&#xff09;&#xff1a; 开发环境是用于开发新功能、修改和调试代码的环境。 在开发环境中&#xff0c;开发人员可以针对特定需求编写和测试代码。 通常&#xff0c;开发环境会模拟完整的系统环境&#xff0c;并提供开发人员所需…

SQL 性能优化总结

文章目录 一、性能优化策略二、索引创建规则三、查询优化总结 一、性能优化策略 1. SQL 语句中 IN 包含的值不应过多 MySQL 将 IN中的常量全部存储在一个排好序的数组里面&#xff0c;但是如果数值较多&#xff0c;产生的消耗也是比较大的。所以对于连续的数值&#xff0c;能用…

手撕排序之堆排序

一、概念&#xff1a; 什么是逻辑结构、物理结构&#xff1f; 逻辑结构&#xff1a;是我们自己想象出来的&#xff0c;就像内存中不存在一个真正的树 物理结构(存储结构)&#xff1a;实际上在内存中存储的形式。 堆的逻辑结构是一颗完全二叉树 堆的物理结构是一个数组 之…

常见请求方法

请求方法的本质 请求方法是请求行中的第一个单词&#xff0c;它向服务器描述了客户端发出请求的动作类型。在 HTTP 协议中&#xff0c;不同的请求方法只是包含了不同的语义&#xff0c;但服务器和浏览器的一些约定俗成的行为造成了它们具体的区别 fetch(https://www.baidu.com…

【算法|双指针|链表】反转链表

Leetcode206 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例…

opencv 处理扫描件移除灰色背景图

先看对比效果: 再上代码: import cv2 import numpy as npdef remove_gray_background(input_image_path, output_image_path, threshold180):# Load the input imageimage cv2.imread(input_image_path)# Convert the image to grayscalegray cv2.cvtColor(image, cv2.COLO…

【数据可视化】动态条形图Python代码实现

使用 Python 中的 bar_chart_race_cn 库创建动态条形图 前言 数据可视化在今天的数据分析和传达信息中起着至关重要的作用。动态条形图是一种强大的数据可视化工具&#xff0c;可以帮助我们展示随时间变化的数据趋势。本文将介绍如何使用 Python 编程语言中的 bar_chart_race…

阿里云yum源和tuna源

阿里云开源镜像站地址&#xff1a;阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区阿里巴巴开源镜像站&#xff0c;免费提供Linux镜像下载服务&#xff0c;拥有Ubuntu、CentOS、Deepin、MongoDB、Apache、Maven、Composer等多种开源软件镜像源&#xff0c;此外还提供域名解析D…

背包问题学习笔记-01背包

背景 背包问题是动态规划问题中的一个大类&#xff0c;学习背包问题对于掌握动态规划十分重要。背包问题也很容易成为程序员算法面试中的一个槛&#xff0c;但其实背包问题已经被研究&#xff0c;讲解的比较成熟了&#xff0c;在这些丰富的讲解资料的基础之上&#xff0c;大家…

图注意网络(GAT)的可视化实现详解

能够可视化的查看对于理解图神经网络(gnn)越来越重要&#xff0c;所以在这篇文章中&#xff0c;我将介绍传统GNN层的实现&#xff0c;然后展示ICLR论文“图注意力网络”中对传统GNN层的改进。 假设我们有一个表示为有向无环图(DAG)的文本文档图。文档0与文档1、2和3有一条边&am…

第72步 时间序列建模实战:单步滚动预测(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 从这一期开始&#xff0c;我们开始基于python构建各种机器学习和深度学习的时间序列预测模型&#xff0c;本质上就是调用各种模型的回归分析的属性。所以很多模型其实之前都介绍过&#xff0c;比如说决策树、SVM等等。 同样&#xff0…

【踩坑篇】代码中使用 Long 作为 Map的Key存在的问题

本周的工作结束&#xff0c;详述一些在项目代码中实际遇到的一些坑。 代码中遇到这样一个场景&#xff1a; 有个业务接口&#xff0c;接口返回的值是一个JSON格式的字符串&#xff0c;通过JSON解析的方式&#xff0c;解析为格式为&#xff1a; Map<Long, Map<String, O…

数据结构——时间复杂度与空间复杂度

目录 一.什么是空间复杂度与时间复杂度 1.1算法效率 1.2时间复杂度的概念 1.3空间复杂度的概念 二.如何计算常见算法的时间复杂度 2.1大O的渐近表示法 使用规则 三.如何计算常见算法的空间复杂度 3.1 大O渐近表示法 3.2 面试题——消失的数字 3.3 面试题——旋转数组 一…

ChatGPT是留学生的论文神器还是学术不端的罪魁祸首?

当今时代&#xff0c;ChatGPT无疑是大数据和人工智能的完美结合&#xff0c;成为了搜索技术的革命性创新。几秒钟&#xff0c;一篇逻辑清晰、观点鲜明、有充分论据支持的文章即可生成。这种革命性的创新在学术界掀起了巨大的浪潮&#xff0c;甚至让全球的学校开始思考&#xff…