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~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享 8 个 4k 壁纸站点

今天分享 8 个 4k 壁纸站点&#xff0c;换换心情&#xff01; bz.zzzmh 网址&#xff1a;https://bz.zzzmh.cn/ 一个免费的极简壁纸网站。 可以在这里找到所有极简壁纸&#xff0c;不需要注册登录就可以下载&#xff0c;它不限制分类、尺寸&#xff0c;想要什么样的壁纸直接搜…

2023最新版本 从零基础入门C++与QT(学习笔记) -4- C/C++混合编程

&#x1f38f;在C兼容C只需要调用C头文件 &#x1f384;格式 &#x1f388; -1- extern(关键字) “C”{ }(花括号) &#x1f388; -2- 花括号里面填写要包含的头文件 &#x1f384;代码段格式 extern "C" {#include “stdio.h”#include “string.h” }&#x…

【Beyond Compare】大小写对比的设置

1.点击会话设置 2.把大小写打勾 3.对比效果

Linux常用命令用法及实现方式有哪些?

接上一篇&#xff0c;它来啦&#xff01; 5.文本文件编辑命令 (1)touch命令&#xff1a;touch命令用于创建空白文件或设置文件的时间&#xff0c;语法格式为“touch [参数] 文件名称”。 (2)mkdir命令&#xff1a;mkdir命令用于创建空白的目录&#xff0c;英文全称为“make dir…

微同城生活圈小程序源码系统 专业搭建本地生活服务的平台 带完整搭建教程

在互联网的影响下&#xff0c;越来越多的用户开始依赖手机进行日常生活。为了满足本地居民的需求&#xff0c;源码小编来给大家分享一款全新的微同城生活圈小程序源码系统。该系统旨在为本地居民提供一站式的生活服务解决方案&#xff0c;让您的生活更加便捷、高效。 以下是部…

StableDiffusion(四)——高清修复与放大算法

目录 一、高清修复与放大算法 1.高清修复 ①文生图 ②图生图 2.SD放大&#xff08;SD Upscale&#xff09; 3.附加功能放大 4.总结 一、高清修复与放大算法 1.高清修复 概念&#xff1a;分两步&#xff0c;第一步生成低分辨率的图画&#xff0c;第二步使用它指定的高清…

内网Jenkins 部署.net(dotnet)项目

一、前置条件 内网部署Jenkins&#xff0c;并安装好所需插件 此篇内容需承接内网搭建Jenkins自动化远程部署项目到Windows服务器_jenkins内网安装-CSDN博客 &#xff0c;才更好操作与理解 二、在Jenkins中创建项目 三、配置项目 General Source Code Management Build Envi…

源码级JVS低代码功能新增:动态配置、逻辑多级循环嵌套等等

低代码更新功能 新增: 1.下拉组件选项新增动态配置&#xff1b; 选项的内容可以根据特定的条件或数据源进行动态变化的功能&#xff0c;通过动态配置&#xff0c;用户可以灵活地设置下拉组件的选项内容&#xff0c;例如从数据库或其他数据源中获取选项数据&#xff0c;或者根…

AdaBoost:提升机器学习的力量

一、介绍 机器学习已成为现代技术的基石&#xff0c;为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中&#xff0c;AdaBoost&#xff08;Adaptive Boosting的缩写&#xff09;作为一种强大的集成方法脱颖而出&#xff0c;为该领域的成功做出了重大贡献。AdaBoo…

docker 安装xxl-job

1.拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.0 2.docker镜像创建并运行 docker run -e PARAMS"--spring.datasource.urljdbc:mysql://xxxxx:3306/xxl_job?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&serverTimezoneAsia/Shanghai&…

全彩LED显示屏的质量怎样判断

判断全彩LED显示屏的质量需要考虑多个方面&#xff0c;包括平整度、白平衡、可视角度、分辨率、亮度、可靠性和稳定性等。以下是一些建议&#xff0c;供你参考&#xff1a; 平整度&#xff1a;LED显示屏的表面平整度应在1mm以内&#xff0c;以保证显示图像不发生扭曲。局部凸起…

使用 requests 2.11 版本时的 Site ID 类型问题及解决方案

在使用ebaysdk-python库时&#xff0c;一些用户可能会遇到一个特定问题&#xff0c;这个问题与requests库的版本有关。具体问题是&#xff0c;当使用requests库的2.11版本时&#xff0c;用户需要在请求头中传递的值必须为字符串或字节类型&#xff0c;但是传入的值却是整数类型…

文件包含漏洞

文章目录 文件包含漏洞php中文件包含的语句文件包含动态包含 相关配置本地文件包含远程文件包含 漏洞原理特点 利用方法包含图片木马读取敏感文件 读取php源码执行php代码包含图片马写 shell包含日志文件包含防御 文件包含漏洞 ​ 程序开发人员通常会把可重复使用函数或语句写…

从零到一:抖音小程序开发全指南及预算规划

在数字时代&#xff0c;抖音小程序的开发成为企业实现品牌推广、服务提供的重要途径。本文将为您提供从零到一的抖音小程序开发全指南&#xff0c;包括预算规划以及一些关键的技术代码示例。 1. 项目准备 在开始抖音小程序开发之前&#xff0c;需要进行一些项目准备工作。 …

【git】git本地仓库命令操作详解

这篇文章主要是针对git的命令行操作进行讲解&#xff0c;工具操作的基础也是命令行&#xff0c;如果基本命令操作都不理解&#xff0c;就算是会工具操作&#xff0c;真正遇到问题还是一脸懵逼 1.操作逻辑图 本地仓库的命令操作关系图 2.基本命令操作 1.1建立一个gittest01文…

关于修改了mysql的my_conf文件之后,不能生效问题

个人名片&#xff1a; &#x1f405;作者简介&#xff1a;一名大三在校生&#xff0c;热爱生活&#xff0c;爱好敲码&#xff01; \ &#x1f485;个人主页 &#x1f947;&#xff1a;holy-wangle ➡系列内容&#xff1a; &#x1f5bc;️ tkinter前端窗口界面创建与优化 &…

功率放大器在生物医疗测试领域研究中的应用

生物医学相关测试&#xff0c;就是运用生物学及工程技术手段来研究和解决生命科学&#xff0c;特别是医学中的有关问题&#xff0c;是关系到提高医疗诊断水平和人类自身健康的重要工程领域。功率放大器作为生物医学领域相关实验平台的重要组成部分&#xff0c;在生物医学领域研…

weblogic多机集群节点管理服务配置

1.安装启动管理端控制台略过了&#xff0c;登录到控制台&#xff0c; 2.创建集群&#xff0c;配置信息如图&#xff0c;基本默认就行&#xff0c;点完成。点击集群名称&#xff0c;添加服务器 前两个是管理机上的两个服务&#xff0c;后面是另个一个机器的两个节点服务&#…

aliyun Rest ful api V3版本身份验证构造

aliyun Rest ful api V3版本身份验证构造 参考官网&#xff1a;https://help.aliyun.com/zh/sdk/product-overview/v3-request-structure-and-signature?spma2c4g.11186623.0.0.787951e7lHcjZb 构造代码 &#xff1a;使用GET请求进行构造&#xff0c;算法使用sha256 使用postm…

mq具体使用方式

代码方式 第一步方式导入依赖的方式 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--AMQP依赖&#xff0c;包含RabbitMQ--><…