C++写算法题时常见问题(稳定更新)

目录

1.如何用 getline 函数读取用户输入的一行

2.如何防止用 scanf 读取字符时读取了 换行和空格

3.map和unordered_map的差别和使用

4.“表达式求值”问题解析

5.运行报RE错误

6.在set或者map里面使用结构体

7.运行时报TLE时,时间复杂度问题

8.double类型的输入和输出


1.如何用 getline 函数读取用户输入的一行

代码源于蓝桥杯演示文档

#include <string>
#include <iostream>
#include <sstream>int main()
{// 问候用户std::string name;std::cout << "What is your name? ";std::getline(std::cin, name);std::cout << "Hello " << name << ", nice to meet you.\n";// 逐行读文件std::istringstream input;input.str("1\n2\n3\n4\n5\n6\n7\n");int sum = 0;for (std::string line; std::getline(input, line); ) {sum += std::stoi(line);}std::cout << "\nThe sum is: " << sum << "\n";
}

输出:

What is your name? John Q. Public
Hello John Q. Public, nice to meet you.The sum is 28

2.如何防止用 scanf 读取字符时读取了 换行和空格

常见错误:

解决方案:scanf(" %c",&c);在%前加空格

解决后:

3.map和unordered_map的差别和使用

map和unordered_map的差别和使用_map和unorderedmap的区别-CSDN博客

4.“表达式求值”问题解析

AcWing 3302. 表达式求值:多图讲解运算符优先级+详细代码注释 - AcWing

5.运行报RE错误

可能存在的问题:

1.在函数里面的数组开太大(原因:数组定义在函数里面会直接在堆栈里面申请空间)。故大数组务必放在函数外面作为全部变量。

2.出现了除0,检查除法有没有可能会导致除0的地方。

3.堆栈溢出,即1或者递归调用次数过多

4.在scanf("%d",a);给a赋值的时候没有加&

5.数组开的小,导致数组下标越界

6.在set或者map里面使用结构体

当我们需要在set和map里面使用结构体的时候,需要对运算符进行重载

下面给出例子:

在结构体外进行运算符重载:

struct Person {std::string name;int age;
};bool operator<(const Person& p1, const Person& p2) {return p1.age < p2.age;
}bool: 这是函数的返回类型,表示返回一个布尔值。
operator<: 这是 < 运算符的函数形式,表示重载了小于运算符。
(const Person& p1, const Person& p2): 这是函数的参数,它们是常量引用类型的 Person 对象,用于比较两个 Person 对象的年龄。
{}: 这是函数体的起始和结束符号,表示函数体内的代码块。

或者也可以采用在结构体内进行运算符重载:

struct Person {std::string name;int age;bool operator <(const Person& p)const{return age<p.age;}
};bool: 这是函数的返回类型,表示返回一个布尔值。
operator <: 这是 < 运算符的函数形式,表示重载了小于运算符。
(const Person& p): 这是函数的参数,它是一个常量引用类型的 Person 对象,表示要与当前对象进行比较的对象。
const: 这是成员函数的修饰符,表示该函数不会修改当前对象的成员变量。
{}: 这是函数体的起始和结束符号,表示函数体内的代码块。

详细关于运算符重载:运算符重载(在c++中使用set、map存储结构体)-CSDN博客 

7.运行时报TLE时,时间复杂度问题

写的算法的时间复杂度小于或者等于10^8我们都认为该算法能够在1s之内,故运行时报TLE时,需检查自己写的算法,耗费时间最大的地方的时间复杂度能否优化,改写你的算法 

8.double类型的输入和输出

scanf 输入double类型时,必须使用%lf

printf 输出double类型时,使用%lf和%f都可以,但根据C语言标准,应该使用"%f“格式符来输出double类型的值,故推荐大家输出double类型时使用%f

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

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

相关文章

Photoshop CS6 下载安装教程,保姆级教程,小白也能轻松搞的,附安装包

前言 Adobe Photoshop CS6强大的照片拍摄和突破性的新功能&#xff0c;用于复杂的图形、选择、逼真的绘画和装饰智能。创建惊人的高动态范围(HDR)图像。用逼真的笔触和混合的颜色绘画。消除噪音&#xff0c;添加种子&#xff0c;并绘制一个国家最先进的摄影设备的草图。凭借原…

神经网络不需要懂原理,只需要应用???(附268篇顶会论文)

神经网络不需要弄明白原理&#xff0c;只要会应用就行&#xff0c;这是真的吗&#xff1f; 具体情况具体分析。如果你是论文要求不高&#xff0c;那么就不需要搞太清楚&#xff0c;如果你的毕业要求高&#xff0c;或者想要更高的提升&#xff0c;尤其是想申博、进大厂&#xf…

golang网络编程day6(结)

golang网络编程day6 golang websocket编程golang rpc编程最终总结 golang websocket编程 什么是websocket&#xff1f;&#xff0c;和socket是一回事吗&#xff1f; websocket和传统的socket有些相似&#xff0c;又有些重要区别 1.WebSocket&#xff1a; &#xff08;1&#…

【C语言】socket编程接收问题

一、recv()函数接收到的返回值为0表示对端已经关闭 在TCP套接字编程中&#xff0c;通过recv()函数接收到的返回值为0通常表示对端已经关闭了套接字的发送部分。这是因为TCP是一个基于连接的协议&#xff0c;其中有定义明确的连接建立和终止流程&#xff1b;当对端调用close()或…

Vue2.0 组件传值方式:父传子、子传父、非父子组件传值

文章目录 1. 父组件向子组件进行传值父组件&#xff1a;子组件&#xff1a; 2. 子组件向父组件传值子组件&#xff1a;父组件&#xff1a; 3. 非父子组件进行传值公共bus.js组件A&#xff1a;组件B&#xff1a; 每次总结都是在加强一遍记忆 1. 父组件向子组件进行传值 父组件&…

数据分析:当当网书籍数据可视化分析

当当网书籍数据可视化分析 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&…

GA/T 1707-2019 防爆安全门检测

防爆安全门是指能抵抗爆炸冲击波作用的特种防护门&#xff0c;根据防爆门的防爆性能的不同&#xff0c;分为非接触爆炸防爆门和防接触爆炸防爆门&#xff0c;根据防爆能力的不同&#xff0c;分为不同等级。 GA/T 1707-2019 防爆安全门检测项目 测试项目 测试标准 外观质量 …

基于场景文字知识挖掘的细粒度图像识别算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;基于场景文字知识挖掘的细粒度图像识别算法1、研究背景2、方法提出方法模块 3、试验4、文章贡献 二、RNN代码学习2.1、什么是RNN2…

Day43 377组合总和IV 70爬楼梯 322零钱兑换 279完全平方数 139单词拆分

377 组合总和IV 给定一个由正整数组成且不存在重复数字的数组&#xff0c;找出和为给定目标正整数的组合的个数。 示例: nums [1, 2, 3]target 4 所有可能的组合为&#xff1a; (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) 请注意&#xff0c;顺序…

快速上手Vue开发:npm命令大全

文章目录 一、简介二、基础命令1、设置镜像2、安装包3、卸载包4、更新包5、查看已安装包6、检查过时的包7、查看帮助8、显示 npm 根目录9、创建 package.json 文件10、清除缓存 一、简介 npm是JavaScript运行时环境Node.js的默认包管理器&#xff0c;全称是Node Package Manage…

Mysql学习记录补充

索引 在无索引情况下&#xff0c;就需要从第一行开始扫描&#xff0c;一直扫描到最后一行&#xff0c;我们称之为 全表扫描&#xff0c;性能很低。 如果我们针对于这张表建立了索引&#xff0c;假设索引结构就是二叉树&#xff0c;那么也就意味着&#xff0c;会对age这个字段…

关于python中的import

导入指定路径下的模块 sys模块中的sys.path中保存在代码运行时依次寻找模块的路径&#xff0c;sys.path的返回值是一个列表&#xff0c;可以通过向列表中插入或追加路径&#xff0c;来实现调用指定路径下模块的查找。 除了在运行时添加环境变量还可在修改配置文件来添加环境变…

Linux|Grep 命令的 12 个实用示例

您是否曾经遇到过在文件中查找特定字符串或模式的任务&#xff0c;但不知道从哪里开始查找&#xff1f;那么&#xff0c;grep 命令可以拯救你&#xff01; grep 是一个功能强大的文件模式搜索器&#xff0c;每个 Linux 发行版都配备了它。如果出于某种原因&#xff0c;它没有安…

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…

C++ STL库详解:容器适配器stack和queue的结构及功能

一、stack 1.1stack的介绍 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xf…

图数据库(neo4j)在工业控制中的应用

图模型 事物的模型中&#xff0c;除了它自身的某些特征之外&#xff0c;还包括它与其它事物的关系特征&#xff0c;例如一个学生的属性包括姓名&#xff0c;性别&#xff0c;年龄等属性&#xff0c;同时&#xff0c;他还有许多关系属性&#xff0c;比如他属于哪一个院系&#x…

背篼酥电子编程内部集中培训寒假营

寒假营专栏 7节理论加3节比赛 第一课 背篼酥电子编程内部集中培训第一课-基础知识 第二课 背篼酥电子编程内部集中培训第二课–软件环境 第三课 背篼酥电子编程内部集中培训第三课–蜂鸣器 第四课 背篼酥电子编程内部集中培训第四课–红外避障 第五课 背篼酥电子编程…

修改照片尺寸好用的工具,分享4款!

在数字时代&#xff0c;照片已成为我们生活的一部分&#xff0c;而如何调整照片尺寸以满足不同的需求&#xff0c;则显得至关重要。今天&#xff0c;我们就来探讨那些可以修改照片尺寸的工具&#xff0c;让你轻松应对各种尺寸需求。 茄子水印相机 这是一款功能强大、操作简单的…

MacBook有必要装清理软件吗?CleanMyMac X v4.14.6 直装特别版 附安装教程

MacBook是苹果公司的一款高端笔记本电脑&#xff0c;但是&#xff0c;随着使用时间的增长&#xff0c;MacBook也会出现一些问题&#xff0c;比如运行缓慢、卡顿、垃圾文件堆积、磁盘空间不足等。这些问题不仅影响了用户的使用体验&#xff0c;也可能对MacBook的寿命和安全性造成…