换换换 码题集

news2024/11/24 7:00:47

难度:钻石 时间限制:1秒 占用内存:128M
机器人小R在看一个魔术表演,魔术师面前有一排共N个倒扣着的杯子,其中每一个下面都有一个小玩具t; ,并且每个小玩具都是唯一的。 魔术师飞快地变换杯子之后让小R
猜其中M个玩具tj 在哪个杯子里。 由于机器人小R内置的程序只能记录杯子的数量
N,小玩具初始的位置p,以及魔术师每次变换杯子的位置P1,P2 。小R的主人希望你
能写一个程序,帮助小R找出玩具。
在这里插入图片描述
输入
5 5 5
car
van
track
dog
cat
1 2
4 5
3 2
5 1
1 4
van
car
track
dog
cat
输出
5
3
2
4
1
在这里插入图片描述
原始思路:for循环,但会运行超时

#include<bits/stdc++.h> 

using namespace std;
int main(){
	int n,m,t;
	cin>>n>>m>>t;
	string s[n];
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	for(int i=0;i<t;i++){
		int c;
		int b;
		cin>>c>>b;
		string q=s[c-1];
		s[c-1]=s[b-1];
		s[b-1]=q;
	}
	int p[m];
	for(int i=0;i<m;i++){
		string q;
		cin>>q;
		for(int j=0;j<n;j++){
			if(s[j]==q){
				p[i]=j+1;
				break;
			}
		}
	}
	for(int i=0;i<m;i++){
		cout<<p[i]<<endl;
	} 
	 return 0;
}

vector可以动态添加字符串

#include <vector>  
#include <string>  
  
std::vector<std::string> stringVector; // 可以动态添加字符串  
stringVector.push_back("Hello");  
stringVector.push_back("World");  

// 使用std::array(如果数量是固定的)  
#include <array>  
std::array<std::string, 5> stringArray;  
stringArray[0] = "Hello";  
stringArray[1] = "World";

运用swap()函数,可以省掉一个交换过程代码,运用map,可以省略for循环的一些过程,使得程序不再超时。
在C++中,std::map是一个关联容器,它存储的元素都是键值对,并根据键的值自动排序。std::map中的元素都是唯一的,这意味着任何两个元素都不能有相同的键。

以下是使用std::map的基本步骤:

包含头文件:
首先,你需要包含头文件来使用std::map。
cpp
#include

#include
声明map:
声明一个std::map,指定键和值的类型。
cpp
std::map<int, std::string> myMap; // 键是int类型,值是std::string类型
插入元素:
你可以使用insert成员函数或者operator[]来插入元素。
使用insert函数:

cpp
myMap.insert(std::pair<int, std::string>(1, “one”));
myMap.insert(std::pair<int, std::string>(2, “two”));
或者使用operator[](如果键不存在,会创建它):

cpp
myMap[1] = “one”;
myMap[2] = “two”;
访问元素:
通过键来访问对应的值。
cpp
std::string value = myMap[1]; // value现在是"one"
std::cout << value << std::endl;
注意,使用operator[]访问不存在的键时,会创建一个新的键值对,键是请求的键,值是类型的默认值。如果你想要检查键是否存在而不创建新的键值对,应该使用find成员函数。

遍历map:
可以使用迭代器来遍历std::map中的所有元素。
cpp
for (std::map<int, std::string>::iterator it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
或者使用C++11引入的范围for循环:

cpp
for (const auto& kv : myMap) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
删除元素:
使用erase成员函数来删除元素。
cpp
myMap.erase(1); // 删除键为1的元素
或者删除一个迭代器指向的元素:

cpp
std::map<int, std::string>::iterator it = myMap.find(2);
if (it != myMap.end()) {
myMap.erase(it);
}
检查元素是否存在:
使用find成员函数来检查一个键是否在std::map中。
cpp
std::map<int, std::string>::iterator it = myMap.find(3);
if (it != myMap.end()) {
std::cout << "Key 3 found with value: " << it->second << std::endl;
} else {
std::cout << “Key 3 not found.” << std::endl;
}
获取map的大小:
使用size成员函数来获取std::map中元素的数量。
cpp
std::cout << "Size of map: " << myMap.size() << std::endl;
这些是std::map的基本用法。在实际编程中,你可以根据具体需求来使用这些功能。注意,std::map中的元素默认是按键的升序排列的,你也可以通过提供一个比较函数或对象来改变排序规则。

#include<bits/stdc++.h> 

using namespace std;
int main(){
	int n,m,t;
	cin>>n>>m>>t;
	string s[n];
	map<string,int>mp; 
	for(int i=0;i<n;i++){
		cin>>s[i];
		mp[s[i]]=i+1;
	}
	for(int i=0;i<t;i++){
		int c;
		int b;
		cin>>c>>b;
		swap(s[c-1],s[b-1]);
		swap(mp[s[c-1]],mp[s[b-1]]);
	}
	for(int i=0;i<m;i++){
		string q;
		cin>>q;
		cout<<mp[q]<<endl;
		}	 
	 return 0;

}

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

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

相关文章

校园论坛系统

文章目录 校园论坛系统一、项目演示二、项目介绍三、10000字论文参考四、系统部分功能截图五、部分代码展示六、底部获取项目和10000字论文参考&#xff08;9.9&#xffe5;&#xff09; 校园论坛系统 一、项目演示 校园论坛系统 二、项目介绍 基于springbootvue的前后端分离…

网上一个叫阳哥的网红分享的人力RPO项目靠谱吗?

在抖音平台上&#xff0c;阳哥以其专业的知识和独到的见解&#xff0c;吸引了大量粉丝的关注。最近&#xff0c;他分享的人力RPO项目更是引起了广泛关注。那么&#xff0c;阳哥介绍的这个人力RPO项目到底靠不靠谱呢?本文将从四个方面进行分析和佐证。 首先&#xff0c;阳哥作为…

ARM/X86+FPGA轨道交通/工程车辆行业的解决方案

深圳推出首条无人驾驶地铁—深圳地铁20号线&#xff0c;可以说是深圳地铁的一次开创性的突破。智能交通不断突破的背后&#xff0c;需要很严格的硬件软件等控制系 统&#xff1b;地铁无人驾驶意味着信号系统、通信系统、综合监控系统、站台屏蔽门工程等项目必须严格执行验收。…

路由器端口映射是什么意思?

路由器端口映射是一种网络配置技术&#xff0c;在私有网络中允许外部网络访问特定的服务或应用程序。通过将路由器的端口映射到内部客户端设备&#xff0c;可以实现从公共网络访问内部网络资源的目的。 天联组网介绍 天联是一款异地组网内网穿透产品&#xff0c;由北京金万维科…

【全网最详细】如何保证缓存和数据库一致性

如何保证缓存和数据库一致性&#xff0c;这是一个老生常谈的话题了。 但很多人对这个问题&#xff0c;依旧有很多疑惑&#xff1a; 到底是更新缓存还是删缓存&#xff1f;到底选择先更新数据库&#xff0c;再删除缓存&#xff0c;还是先删除缓存&#xff0c;再更新数据库&…

【灵境矩阵】零代码创建AI智能体之行业词句助手

欢迎来到《小5讲堂》 这是《灵境矩阵》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 创建智能体选择创建方式零代码 基础配置头像名称简介指令开场白…

【Vue3进阶】- 第2学堂小商城项目后端准备和接口文档

简介 在大多数前端项目开发中&#xff0c;都需要与后端进行接口交互&#xff0c;后端通常会以文档的形式提供接口信息&#xff0c;前端开发者通过阅读这些文档&#xff0c;了解后端接口的功能和使用方法&#xff0c;从而实现数据的获取和提交等功能。 第二学堂小商城教程后端…

Vue3 之 JsBarcode打印条形码

一、前情提要 1. 需求 根据商品sku打印出条形码&#xff0c;贴在商品盒上 2. 效果 二、使用前准备 1. 下载 JsBarcode npm install jsbarcode --save 2. 配置项 3. 封装 import jsbarcode from jsbarcodeexport default function renderBarcode(el: HTMLElement, value: s…

洛谷【入门2】分支结构——python题解

洛谷【入门2】分支结构——python题解 【深基1-2】小学数学 N 合一题目描述问题 1问题 2问题 3问题 4问题 5问题 6问题 7问题 8问题 9问题 10问题 11问题 12问题 13问题 14 输入格式输出格式样例 #1样例输入 #1样例输出 #1 【深基2.习6】Apples Prologue / 苹果和虫子题目描述输…

即插即用模块之DO-Conv(深度过度参数化卷积层)详解

目录 一、摘要 二、核心创新点 三、代码详解 四、实验结果 4.1Image Classification 4.2Semantic Segmentation 4.3Object Detection 五、总结 论文&#xff1a;DOConv论文 代码&#xff1a;DOConv代码 一、摘要 卷积层是卷积神经网络(cnn)的核心组成部分。在本文中…

外贸开发信必知技巧:高回复率不再是梦

外贸行业在Zoho的客户群体中占比较高。因为我们的国际化背景、丰富的产品组合、多语言多币种跨时区、高性价比等特点&#xff0c;成为外贸企业开展业务的选择。在和外贸客户沟通中&#xff0c;发现无论是外贸大拿还是新手小白&#xff0c;大家遇到一个共同的问题——发出去的开…

动态规划在矩阵链乘法中的应用:寻找最优括号化方案

动态规划在矩阵链乘法中的应用&#xff1a;寻找最优括号化方案 一、问题描述二、动态规划的基本概念三、矩阵链乘法问题的动态规划解法四、伪代码五、C语言代码示例六、计算括号化方案的数量七、结论 计算括号化方案的数量问题是计算机科学中的一个经典问题&#xff0c;它涉及到…

K8S node节点执行kubectl get pods报错

第一个问题是由第二个问题产生的&#xff0c;第二个问题也是最常见的 网上找的都是从master节点把文件复制过来&#xff0c;这样确实可以解决&#xff0c;但是麻烦&#xff0c;有一个node节点还好&#xff0c;如果有多个呢&#xff1f;每个都复制吗&#xff1f;下面是我从外网…

为什么要“挺”鸿蒙?

鸿蒙到底是什么&#xff1f; 随着5G、物联网等技术的快速发展&#xff0c;智能终端设备的应用场景也越来越广泛。为了满足不同设备间的互联互通需求&#xff0c;华为在2019年推出了自主研发的操作系统——鸿蒙OS。值得关注的是&#xff0c;这也是首款国产操作系统。 要了解鸿…

密码学 | 椭圆曲线 ECC 密码学入门(三)

目录 7 这一切意味着什么&#xff1f; 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址&#xff1a;A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面&#xff1a;本文属搬运博客&#xff0c;自己留…

YOLOv8草莓生长状态(灰叶病缺钙需要肥料)检测系统(python开发,带有训练模型,可以重新训练,并有Pyqt5界面可视化)

本次检测系统&#xff0c;不仅可以检测图片、视频或摄像头当中出现的草莓叶子是否有灰叶病&#xff0c;还可以检测出草莓叶是否缺钙、是否需要施肥等状态。基于最新的YOLO-v8训练的草莓生长状态检测模型和完整的python代码以及草莓的训练数据&#xff0c;下载后即可运行&#x…

CentOS7安装MySQL8.0教程

环境介绍 操作系统&#xff1a;Centos7.6 MySQL版本&#xff1a; 8.0.27 只要是8.0.*版本&#xff0c;那就可以按照本文说明安装 一、安装前准备 1、卸载MariaDB 安装MySQL的话会和MariaDB的文件冲突&#xff0c;所以需要先卸载掉MariaDB。 1.1、查看是否安装mariadb rpm -…

如何在Windows通过固定tcp公网地址ssh远程访问本地Kali Linux

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 本文主要介绍如何在Kali系统编辑SSH配置文件并结合cpolar内网穿透软件&#xff0c;实现公网环境ssh远程连接本地kali系统。 1. 启…

bilibili PC客户端架构设计——基于Electron

众所周知&#xff0c;bilibili是个学习的网站&#xff0c;网页端和粉版移动端都非常的好用&#xff0c;不过&#xff0c;相对其它平台来说bilibili的PC客户端也算是大器晚成了。在有些场景PC客户端的优势也是显而易见的&#xff0c;比如&#xff0c;跓留电脑桌面的快捷、独立的…

实战纪实 | 编辑器漏洞之Ueditor-任意文件上传漏洞 (老洞新谈)

UEditor 任意文件上传漏洞 前言 前段时间在做某政府单位的项目的时候发现存在该漏洞&#xff0c;虽然是一个老洞&#xff0c;但这也是容易被忽视&#xff0c;且能快速拿到shell的漏洞&#xff0c;在利用方式上有一些不一样的心得&#xff0c;希望能帮助到一些还不太了解的小伙…