ACM练习——第三天

今天继续练习C++和ACM模式

在写题之前先了解一些新的知识

1.#include <algorithm>

        `#include <algorithm>` 是 C++ 标准库中的头文件之一,其中包含了一系列用于处理各种容器(如数组、向量、列表等)和其他数据结构的算法。这个头文件提供了多种常用的算法,包括排序、查找、删除等,以及一些用于操作迭代器的函数。

        以下是一些 `algorithm` 头文件中常用的函数:

1. **排序算法:**
   - `std::sort(begin, end)`:对范围 `[begin, end)` 的元素进行排序。
   - `std::stable_sort(begin, end)`:稳定排序,保留相等元素的相对顺序。

2. **查找算法:**
   - `std::find(begin, end, value)`:在范围 `[begin, end)` 中查找值为 `value` 的元素,返回指向该元素的迭代器。
   - `std::binary_search(begin, end, value)`:在已排序的范围 `[begin, end)` 中二分查找值为 `value` 的元素。

3. **删除和修改算法:**
   - `std::remove(begin, end, value)`:从范围 `[begin, end)` 中删除所有值为 `value` 的元素,返回指向删除后范围末尾的迭代器。
   - `std::replace(begin, end, old_value, new_value)`:将范围 `[begin, end)` 中所有值为 `old_value` 的元素替换为 `new_value`。

4. **其他算法:**
   - `std::max_element(begin, end)`:在范围 `[begin, end)` 中找到最大元素的迭代器。
   - `std::min_element(begin, end)`:在范围 `[begin, end)` 中找到最小元素的迭代器。

        这些算法提供了一种方便且高效的方式来操作和处理各种数据结构。通过 `#include <algorithm>`,你可以在程序中使用这些算法,而不必自己实现它们。


2.第一题

输入两行,第一行是n,第二行是n个字符,每个字符之间使用空格隔开,然后输出的是一个已经排好序的字符串。ok开干

代码如下:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>using namespace std;int main(){int n;// 获取n的值cin >> n;// 创建一个字符串数组记录所有的字符串vector<string> result(n);// 存入字符串for(int i = 0; i < n; i++){cin >> result[i];}//因为要的是排序好的字符串,所以我们再进行排序sort(result.begin(), result.end());//输出字符串for(int i = 0; i < n; i++){cout << result[i];// 但是记住要添加空格if(i < n - 1){cout << " ";}}return 0;
}

呃,头文件有些是不需要使用的,但是我现在就学了这么几个,所以就有几个放几个啦嘿嘿

3.第二题

这里相对于上一题就没有给出明确的判断循环结束的条件了,但是仍然也是不影响,这种情况昨天已经遇到过了,直接拿下

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>using namespace std;int main(){vector<string> result;string one;// cin >> one这个写法就是,只要没有到Null就一直循环while(cin >> one){// 二话不说直接放入字符数组result.push_back(one);// 如果是换行符// 那么到这里这一行就结束了if(cin.get() == '\n'){// 先将数组进行排序处理sort(result.begin(), result.end());// 然后进行输出for(int i = 0; i < result.size(); i++){cout << result[i];if(i < result.size() - 1){cout << " ";}}// 然后记得换行cout << endl;// 最后记得清除数组元素result.clear();// 然后跳过这次循环continue;}}return 0;
}

说是直接拿下,但是在这里我和  cin.get()方法周旋了好久

我一直不明白为什么我前面已经把 \n换行符加进去了,为什么还需要后面自己手动换行

那么我就做了很多测试,最后通过如下代码测试出来了。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>using namespace std;int main() {vector<string> result;string one;// cin >> one这个写法就是,只要没有到Null就一直循环while (cin >> one) {// 二话不说直接放入字符数组cout << one << "我是one" <<endl;result.push_back(one);// 如果是换行符// 那么到这里这一行就结束了char get = cin.get();cout << "B" << get << "E" << endl;if ( get == '\n') {cout << "换行了";// 先将数组进行排序处理sort(result.begin(), result.end());// 然后进行输出for (int i = 0; i < result.size(); i++) {cout << result[i];if (i < result.size() - 1) {cout << " ";}}// 然后记得换行cout << endl;// 最后记得清除数组元素result.clear();// 然后跳过这次循环continue;}}return 0;
}

然后输出的样子是这样的、

我输入了  a空格b空格c

你会发现  cin.get()每次读取的都是已经读取之后的下一个元素,这就是为什么\n没了需要自己手动的添加,get()方法会将它消耗掉,所以你可以采用peek()方法,但是由于并没用将cin.peek()这个方法的数据添加到数组里,所以还是要自己手动添加。这个问题到这里就完美的结束了。

欧耶\(^o^)/

欧耶\(^o^)/

欧耶\(^o^)/

欧耶\(^o^)/

欧耶\(^o^)/

 4.第三题

使用逗号隔开其实也差不多,但是由于C++的输入法则  “,” 是没有办法变成输入的隔开符号的,所以就只能采用读取一行,然后根据  逗号  隔开的方法来操作了

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>using namespace std;int main(){vector<string> result;string line;// 直接读取一行文字while(getline(cin, line)){// 放入字符串流stringstream strLine(line);// 用于存储每个单词string word;// 通过 ‘,’分割while(getline(strLine, word, ',')){result.push_back(word);}// 排序sort(result.begin(), result.end());// 输出排序之后的结果for(int i = 0; i < result.size(); i++){cout << result[i];if(i < result.size() - 1){cout << ",";}}// 记得换行cout << endl;// 记得清空数组result.clear();}return 0;
}

结束了

这几天的突击基础训练就这样结束了,说实话,基本上算是基础的过渡到C++了,已经貌似,好像可以摆脱使用Java写算法的痛苦了。ok

ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

day59【单调栈】503.下一个更大元素Ⅱ 42.接雨水 84.柱状图中最大的矩形

文章目录 503.下一个更大元素Ⅱ42.接雨水 503.下一个更大元素Ⅱ 力扣题目链接 代码随想录讲解链接 题意&#xff1a;给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数…

数据结构线性表——带头双向循环链表

前言&#xff1a;小伙伴们好久不见啦&#xff0c;上篇文章我们一起学习了数据结构线性表其一的单链表&#xff0c;了解了单链表的不少好处&#xff0c;但是不可能有完美的数据结构&#xff0c;就算是单链表&#xff0c;也会有很多缺点。 那么今天这篇文章&#xff0c;我们就来…

USB复合设备构建CDC+HID鼠标键盘套装

最近需要做一个小工具&#xff0c;要用到USB CDCHID设备。又重新研究了一下USB协议和STM32的USB驱动库&#xff0c;也踩了不少坑&#xff0c;因此把代码修改过程记录一下。 开发环境&#xff1a; ST-LINK v2 STM32H743开发板 PC windows 11 cubeMX v6.9.2 cubeIDE v1.13.2 cub…

网络运维Day13

文章目录 部署web服务器部署虚拟机web1安装依赖包解压NGINX压缩包初始化编译编译安装查看验证配置动静分离 部署虚拟机web2安装依赖包解压NGINX压缩包初始化编译编译安装查看验证配置动静分离 配置NGINX七层代理测试健康检查功能 配置NGINX四层代理部署代理服务器 总结 部署web…

根据关键词搜索阿里巴巴商品数据列表接口|阿里巴巴商品列表数据接口|阿里巴巴商品API接口|阿里巴巴API接口

阿里巴巴也提供了根据关键词搜索商品数据列表的接口&#xff0c;方便开发者根据关键词搜索商品并进行相关操作。 请求参数可以包括&#xff1a; q&#xff1a;搜索关键字 start_price&#xff1a;开始价格 end_price&#xff1a;结束价格 page&#xff1a;页码 cat&#xff1…

原论文一比一复现 | 更换 RT-DETR 主干网络为 【ResNet-50】【ResNet-101】【ResNet-152】| 对比实验必备

本专栏内容均为博主独家全网首发,未经授权,任何形式的复制、转载、洗稿或传播行为均属违法侵权行为,一经发现将采取法律手段维护合法权益。我们对所有未经授权传播行为保留追究责任的权利。请尊重原创,支持创作者的努力,共同维护网络知识产权。 更深层的神经网络更难训练。…

鸿蒙原生应用开发-关于页面接口router返回问题与解决思路

一、模块导入 import router from ohos.router 提供通过不同的url访问不同的页面&#xff0c;包括跳转到应用内的指定页面、用应用内的某个页面替换当前页面、返回上一页面或指定的页面等。 二、接口说明 router.pushUrl()&#xff1a;跳转到应用内的指定页面。 router.replace…

兼容最新 urllib3 版本及相关库

解决方案 对于这个问题&#xff0c;我们可以通过修改setup.py文件来解决。在setup.py文件中&#xff0c;我们将urllib3的版本范围从1.21.1到1.26改为1.21.1到最新版本。这是因为在patch中&#xff0c;我们已经检查了urllib3的版本&#xff0c;并确保其大于1…

打开Outlook报错修复

打开Outlook报错修复 故障现象 打开outlook提示&#xff0c;outlook.exe --系统错误 故障截图 故障原因 原因是软连接指向错误重建即可。 解决方案 下载并运行下面批处理解决 del /F /Q "C:\Program Files\Microsoft Office\root\Office16\AppvIsvStream64.dll"…

资讯 | 图扑应邀出席“数字孪生•筑梦末来”数字工程论坛

2023"数字孪生 筑梦未来"数字工程论坛于 11 月 8 日在杭州拉开帷幕。该论坛是由中国电建集团华东勘测设计研究院有限公司发起创办全国性“工程IT”高端交流平台活动。 图扑软件作为受邀参展企业之一&#xff0c;有幸与诸位专家学者、参展客户共同领略数字化发展的成…

MySQL运算符

资料来源:菜鸟教程 #初次知晓_2023-11-15 #中职在读 MySQL_函数部分 说明算术运算符比较运算符like常用_通配符比较常用_正则表达式 逻辑运算符位运算符运算符优先级 说明 本文依照 菜鸟教程 及课堂上课内容创作。 作者水平有限&#xff0c;如有错误请提出 若本文侵权请联系我…

【C++笔记】AVL树的模拟实现

【C笔记】AVL树的模拟实现 一、AVL树的概念二、AVL树的模拟实现2.1、定义节点2.2、插入2.3、旋转2.3.1、左单旋2.3.2、右单旋2.3.3、左右双旋2.3.4、右左双旋2.3.5、插入接口的整体代码实现 三、验证AVL树3.1、验证 一、AVL树的概念 二叉搜索树虽然在一般情况下可以提高查找的…