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.mzph.cn/news/142987.shtml

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

相关文章

【Liunx】DHCP服务

【Liunx】DHCP服务 DHCP概述A.安装dhcpB.查看配置文件C.修改配置文件 DHCP概述 DHCP(Dynamic Host Configuration Protocol)i动态主机配置协议 DHCP是由Internet工作任务小组设计开发的&#xff0c;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。 口使用DHCP服务的…

使用PHP编写采集药品官方数据的程序

目录 一、引言 二、程序设计和实现 1、确定采集目标 2、使用PHP的cURL库进行数据采集 3、解析JSON数据 4、数据处理和存储 5、数据验证和清理 6、数据输出和可视化 7、数据分析和挖掘 三、注意事项 1、合法性原则 2、准确性原则 3、完整性原则 4、隐私保护原则 …

【避雷帖!】安美酷便携屏(安美特)

强烈建议别购买京东安美酷便携屏&#xff0c;太脆弱了&#xff0c;一碰就坏&#xff0c;客服态度不行&#xff0c;容易闪屏等等缺点。而且价格偏贵&#xff0c;淘宝上两百块的屏幕足够用了&#xff0c;没必要花六百多块钱&#xff0c;如果就是买来打游戏的话&#xff0c;也用不…

Adobe 2023 全家桶最终版,一键安装,永久免费,赶紧收藏!(win/mac)

文件名称 Adobe 2023 全家桶最终版 支持系统 windows、mac 获取方式 文章底部 分享形式 百度网盘 小励花了一天的时间给大家整理上传了这份最终版全家桶&#xff0c;全部一键安装即可&#xff0c;无需激活&#xff0c;安装以后即可永久使用&#xff0c;觉得给力的小伙伴…

1688往微信小程序自营商城铺货商品采集API接口

一、背景介绍 随着移动互联网的快速发展&#xff0c;微信小程序作为一种新型的电商形态&#xff0c;正逐渐成为广大商家拓展销售渠道、提升品牌影响力的重要平台。然而&#xff0c;对于许多传统企业而言&#xff0c;如何将商品信息快速、准确地铺货到微信小程序自营商城是一个…

VMware 安装CentOS7

一、软件准备 VMware 虚拟机安装 官网下载链接&#xff1a;VMware pro 17 下载链接 下载 VMware Workstation Pro | CN vm安装教学就不在细说&#xff0c;纯傻瓜式安装 Centos 7镜像文件下载 下载地址&#xff1a; Index of /centos/ | 清华大学开源软件镜像站 | Tsinghua O…

算法笔记——递归(1)

这里写目录标题 递归的思想序列求最大值翻转字符串斐波那契数列数塔回文字符串上楼汉诺塔棋盘覆盖问题数字螺旋矩阵盒分形 递归的思想 子问题须与原始问题为同样的事&#xff0c;且更为简单。 不能无限制地调用本身&#xff0c;须有个出口&#xff0c;化简为非递归状况处理 序…

【中间件篇-Redis缓存数据库05】Redis集群高可用高并发

Redis集群 Redis Cluster是Redis的分布式解决方案&#xff0c;在3.0版本正式推出&#xff0c;有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时&#xff0c;可以采用Cluster架构方案达到负载均衡的目的。之前,Redis分布式方案一般有两种: 1、客户端分…

【unity插件】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件

文章目录 前言地址描述Demo 演示Installation 安装如何玩演示用法使用示例完结 前言 一般的shader无法直接使用在UI上&#xff0c;需要在shader中定义特定的面板参数&#xff0c;今天就来推荐github上大佬做的一套开源的一系列UGUI&#xff0c;Shader实现的特效——UIEffect 为…

KODExplorer中ace.js代码编辑器中自定义PHP提示片段

目录 KODExplorerace.js参考 KODExplorer 这是搭建云盘工具&#xff0c;该工具可以作为在线开发工具使用&#xff0c;其中使用了ace.js作为编辑器&#xff0c;这里主要讲解ace.js编辑器中如何自定义代码提示下载旧版本&#xff0c;再升级到新版本&#xff0c;直接下载新版本没…

【Axure高保真原型】3D饼图_移入显示数据标签

今天和大家分享3D饼图_移入显示数据标签的原型模板&#xff0c;鼠标移入扇形区域时&#xff0c;对应区域会变绿&#xff0c;可以查看该区域对应的项目、数据和占比&#xff0c;这个原型模板是用Axure原生元件制作的&#xff0c;所以无需联网&#xff0c;而且可以自由修改样式、…

4种互斥机制比较

4种互斥机制 关中断禁止任务切换信号量互斥信号量 关中断 关中断&#xff08;Disable Interrupts&#xff09;&#xff1a;通过禁用中断来实现互斥。在关中断期间&#xff0c;任何中断请求都会被忽略&#xff0c;从而确保了临界区的独占性。然而&#xff0c;这种方法会导致系统…

基于Python实现汽车销售数据可视化【500010086】

导入模块 import numpy as np import pandas as pd import plotly.graph_objects as go import plotly.express as px获取数据 df1 pd.read_excel(r"./data/中国汽车总体销量.xlsx") print(df1.head(5))df1.info()df1[年份] df1[时间].dt.year df1[月份] df1[时…

Fourier分析导论——第5章——实数据R上的Fourier变换(E.M. Stein R. Shakarchi)

第5章 实数域ℝ上的Fourier变换 The theory of Fourier series and integrals has always had major difficulties and necessitated a large math- ematical apparatus in dealing with questions of con- vergence. It engendered the development of methods of summa…

CTFhub-RCE-读取源代码

源代码&#xff1a; <?php error_reporting(E_ALL); if (isset($_GET[file])) { if ( substr($_GET["file"], 0, 6) "php://" ) { include($_GET["file"]); } else { echo "Hacker!!!"; } } else {…

android studio开发flutter应用,使用mumu模拟器调试软件

安装好mumu模拟器&#xff0c;先打开网易mumu模拟器的开发者模拟。系统应用 > 设置 > 关于手机 > 版本号 多点击几次调出开发者模式&#xff1a; 然后找到mumu模拟器的安装目录&#xff0c;找到shell文件夹里面的adb.exe&#xff0c;然后执行命令&#xff1a; adb co…

Python requests 库中 iter_lines 方法的流式传输优化

在使用Python的requests库与服务器进行HTTP交互时&#xff0c;发现使用iter_lines方法并不能实现真正的流式传输&#xff0c;而是等待服务器返回一定量的数据或请求结束。这一问题在服务器返回的数据量较大时尤为明显&#xff0c;因为默认情况下&#xff0c;requests库会将数据…

做一个Springboot文章分类模块

目录 文章分类 1、新增文章分类 前言 代码编写 测试 2、 文章分类列表 前言 代码编写 测试 3、获取文章列表详情 前言 代码实现 测试 4、更新文章分类 前言 代码实现 测试 5、删除文章分类 前言 代码实现 测试 分页查询 文章列表条件分页 前言 代码编…

第 19 章 网络编程

网络可以使不同物理位置上的计算机达到资源共享和通信的目的&#xff0c;在Java中也提供了专门的网络开发程序包--java.net&#xff0c;以方便开发者进行网络程序的开发&#xff0c;本章将讲解TCP与UDP程序开发 19.1 网络编程简介 将地理位置不同的、具有独立功能的多台计算机…

三菱PLC小项目系列—传送带多地控制

目录 一、项目描述 二、IO口分配 三、项目程序 四、总结 一、项目描述 化工厂中有传送带进行原料传送加工&#xff0c;当按下启动按钮SB1或者SB2&#xff0c;电机M1接通控制传送带运转&#xff0c;直至按下停止按钮SB3&#xff0c;电机停止并使传送带停止运行。 二、IO口分…