Day1 组队竞赛、删除公共字符

news2024/12/28 10:58:28

✨个人主页: 北 海
🎉所属专栏: C/C++相关题解
🎃操作环境: Visual Studio 2019 版本 16.11.17


文章目录

  • 选择题
    • 1.C基础语法
  • 编程题
    • 组队竞赛
    • 删除公共字符


选择题

1.C基础语法

题目:以下程序的运行结果是()

#include <stdio.h>
int main(void) 
{
	printf("%s , %5.3s\n", "computer", "computer");
	return 0;
}

选项:

  • A. computer , puter
  • B. computer , com
  • C. computer , computer
  • D. computer , compu.ter

分析:本题知识点为 printf 打印格式控制,其中 %s 为打印字符串,而数字可以控制格式长度:其中 . 前的数字表示打印时缩进 N 个空格,而 . 后的数字表示取目标前 M 位字符

关于其他输出格式
结果

第一个 %s 在打印时,表示直接将 computer 打印完,而第二个 %s 表示先缩进 5 个空格,在取 computer 的前 3 个字符打印,剩余字符不再打印

注意: . 后面的数字大于目标字符串长度时,直接打印整个字符串

结果:B

结果


编程题

组队竞赛

题目链接:组队竞赛

题目

题目分析:输入 N 组队伍信息(一个队伍固定为 3 人),规定队伍中的第二名队员(第二大的值)的水平为该队的水平值,尽可能将队员进行合理组队,确保总的队伍水平值为最大

  • 如何确保平均水平值为最大?在组队时,将当前队员中的 最高次高最低 组成一个队,直到所有的队员都被选中,此时问题就很简单了,关键点在于 排序
  • 输入的数据可能为乱序,因此需要先排序,方便进行队员选取
  • 假设当前队员还剩余 N 个,那么此时只需要将 max += N - 1,取得当前队伍的水平值,再 N -= 2,将已经匹配完的队员数去掉,如此重复,直到所有队员都被选中

图解

代码
时间复杂度:3n + (3n)*log(3n) + n -> O(N*logN)
空间复杂度:O(3n)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int n = 0;
    while (cin >> n)
    {
        vector<int> member(n * 3);  //成员池
        for (int i = 0; i < n * 3; i++)
            cin >> member[i];   //读取成员值

        sort(member.begin(), member.end()); //排序
        int pos = 0;
        int N = member.size() - 1;

        long long max = 0;  //注意:存在溢出的情况

        while (pos < N)
        {
            max += member[N - 1];
            pos++;
            N -= 2;
        }

        cout << max << endl;
    }
	return 0;
}

注意:

  • 输入的 n 为队伍数,实际队员数为 3 * n
  • 获取队员水平后,需要对数值进行排序,否则无法进行后续计算
  • 存在溢出问题,因此 max 需要一个更大的类型

溢出

结果

结果

删除公共字符

题目链接:删除公共字符

结果

题目分析:字符串1 中所有在 字符串2 中出现的字符删除,本质:删除公共字符

  • 思路1:先 字符串2 遍历,然后将遍历得到的值,带到 字符串1 中再去遍历,如果发现相同的,就删除
  • 思路2:重构字符串,将 字符串2 构建为 map,对 字符串1 进行遍历,如果该字符已出现在 map 中,那么就不参与重构

两种思路各有优劣,思路1耗时间(重复遍历+删除),而思路2耗费空间,并且是间接到达删除的要求

思路1

#include <iostream>
#include <string>
using namespace std;

//思路1
int main()
{
    string str1, str2;

    //需要使用 getline 因为输入字符串有空格
    getline(cin, str1);
    getline(cin, str2);

    //先将 str2 遍历一遍
    for (auto e : str2)
    {
        int val = e;
        auto it = str1.begin();

        //再将 str1 遍历,将需要删除的字符移除
        while (it != str1.end())
        {
            //注意迭代器失效问题
            if (*it == val)
                it = str1.erase(it);    //删除字符
            else
                it++;
        }
    }

    cout << str1 << endl;

    return 0;
}

结果

思路2

#include <iostream>
#include <string>
#include <map>
using namespace std;

//思路2
int main()
{
    string str1, str2;

    //需要使用 getline 因为输入字符串有空格
    getline(cin, str1);
    getline(cin, str2);

    //建立 map 表,表示是否出现
    map<char, int> table;
    for (auto e : str2) table.insert(make_pair(e, 1));

    //将 str1 遍历,重构字符串
    string tmp;
    for (auto e : str1)
    {
        if (table.find(e) == table.end())
            tmp += e;   //只有未出现的,才能记录
    }

    str1 = tmp;

    cout << str1 << endl;

    return 0;
}

结果

注意: 字符串1 中包含空格,需要使用 getline 函数读取

上述几题都比较简单,其中 组队竞赛 需要想清楚利益最大化原则,配合排序这个关键思想,就能快速突破问题


星辰大海

相关文章推荐

C++题解 | 逆波兰表达式相关

C语言题解 | 去重数组&&合并数组

C语言题解 | 消失的数字&轮转数组

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

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

相关文章

RSA加密为什么能保证安全

问题&#xff1a;我们都知道RSA加密是安全的&#xff0c;但是我们在使用的使用&#xff0c;怎么使用才能保证数据的安全传输呢&#xff1f; 一、原则&#xff1a;公钥机密、私钥解密、私钥签名、公钥验签 公钥私钥都可以加密和解密数据&#xff0c;但是因为持有公钥和私钥的人…

【Elsevier】中科院2区TOP, 高被引119篇, 稳定检索22年, 1周可见刊,5月15截稿~

一、【期刊简介】 中科院2区软计算类SCI (TOP) 【期刊概况】IF:8.0-9.0, JCR1区, 中科院2区&#xff1b; 【终审周期】走期刊部系统&#xff0c;3-5个月左右录用&#xff1b; 【检索情况】SCI&EI双检&#xff1b;正刊&#xff1b; 【数据库收录年份】2001年&#xff1…

【测试】概念篇

目录 &#x1f31f;一、了解软件测试 &#x1f308;1、什么是软件测试 &#x1f308;2、软件测试与开发的区别&#xff08;常考&#xff09; &#x1f308;3、一个优秀的软件测试人员应该具备的素质 &#x1f31f;二、需求与测试用例、软件错误&#xff0c;软件生…

一旦80%的开发人员都开始利用ChatGPT提升工作效率后,挑战与机遇在哪里?

其实我现在已经开始逐渐开始喜欢上ChatGPT了&#xff0c;上班时间摸摸鱼&#xff0c;和ChatGPT畅谈一下理想&#xff0c;遇见一些不太熟练的代码也懒得去上网查了&#xff0c;直接问一问ChatGPT&#xff0c;然后自己再放置到自己的代码里&#xff0c;改一改&#xff0c;很完美。…

快递出入库管理APP开发 收发快递更方便

网购的盛行让收发快递成为很多人日常生活必不可少的一个环节&#xff0c;对于快递公司来说&#xff0c;每天有那么多的快递&#xff0c;如果没有一个好用的管理系统的话&#xff0c;不仅麻烦还很容易出现纰漏&#xff0c;所以快递出入库管理APP软件就显得很必要了。 快递…

python-imageio库简单使用

目录 imread_v2() get_reader() 使用imageio方法将彩色视频变为黑白视频 相关&#xff1a;python-动图制作及分解_觅远的博客-CSDN博客 imageio是一个用于读取和写入图像及视频数据的库&#xff0c;支持多种格式&#xff0c;且可以使用NumPy数组进行操作。常用方法&#xff…

JS逆向 -- 某平台登录加密分析

一、打开网站&#xff0c;使用账号密码登录 账号&#xff1a;aiyou123.com 密码&#xff1a;123456 二、通过F12抓包&#xff0c;抓到如下数据&#xff0c;发现密码加密了 三、加密结果是32位&#xff0c;首先考虑是md5加密。 四、全局搜索pwd&#xff0c;点击右上角&#xf…

C# 纯text文本字符添加上下角标

工作的需求&#xff0c;需要在GridView列HeaderText中插入带入带有上标和下标的字符串&#xff0c;比如这样的一个字符串&#xff1a;。。 解决办法&#xff1a;使用转义字符加Unicode的NumEntity就可以实现了。定义字符串如下&#xff1a;"O"。其中O为 。 实现&…

Linux系统目录树结构以及解释

FHS标准 Filesystem Hierarchy Standard&#xff08;文件系统层次化标准&#xff09;的缩写&#xff0c;多数Linux版本采用这种文件组织形式&#xff0c;类似于Windows操作系统中c盘的文件目录&#xff0c;FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最…

rk平台调试音频(从驱动到apk)

需要实现的功能&#xff1a; 输入&#xff1a;hdmiin、uvc、mic可以实时切换 输出&#xff1a;耳机和HDMI OUT同时输出声音 这里注意&#xff1a;mic是存在hedset情况&#xff0c;4节耳机&#xff0c;即可输出又可输出同时进行 开发情况&#xff1a; 一、先熟悉大致的Andro…

【24】核心易中期刊推荐——图像处理研究大数据及智能处理研究

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

springboot内嵌tomcat文件上传路径不存在问题原因

错误提示: 临时文件目录被删除,导致文件上传报错,我们使用的是linux系统,10天没有使用,就会被删除 代码: 解决办法: 配置文件中自定义临时文件上传目录 server:port: 9090tomcat:basedir: /crm/tmp 特殊情况: 当我上传小文件的时候可以上传成功,大文件的时候上传失败 猜测可…

利用Linux的corntab定时任务和shell脚本,解决傻妞卡死、发信息没反应、一直卡在即将重启、查询数据异常等问题

利用Linux的corntab定时任务和shell脚本&#xff0c;解决傻妞卡死、数据异常等问题 安装corntab创建shell脚本添加corntab定时任务 原理 定时杀死傻妞进程&#xff0c;并自动重启傻妞 安装corntab Linux crontab是用来定期执行程序的命令。 CentOS安装命令如下 yum -y insta…

【Android -- 开发工具】Source Insight 4.0 安装和使用教程

简介 Source Insight 工具是一款功能强大的代码阅读器&#xff0c;它能使大量的代码产生联系&#xff0c;方便阅读&#xff0c;而且支持各种语言的程序代码。 安装 & 激活 1. 下载 下载地址 直接点击下载即可&#xff0c;我下载的是 4.0 版本。 然后按照步骤安装完成即…

chatGPT给出Python time.sleep()假死(挂起)的解决办法

1. time.sleep()假死&#xff08;挂起&#xff09;的原因与解决办法 最近&#xff0c;使用chatGPT帮着写程序&#xff0c;完成通过API获取天气数据的程序&#xff0c;运行起来后出现了状况&#xff1a;莫名其妙的的假死&#xff08;程序被挂起来&#xff0c;不执行了&#xff…

项目结构如何改造(利用RuoYi-Vue脚手架开发一个健身房会员管理系统,改造项目结构)

项目结构如何改造&#xff08;利用RuoYi-Vue脚手架开发一个健身房会员管理系统&#xff0c;改造项目结构&#xff09; 1. 全局查找替换&#xff08;Ctrl Shift R&#xff09;2. 全局查找替换版本号3. 全局查找替换模块名4. 修改项目名5. ShiftF6 重命名模块6. ShiftF6 重命名…

Nginx配置使用GeoIP2模块

一、Nginx简介 Nginx(engine x)是一个免费的、开源的、高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一个…

不废话!CentOS 8 安装docker的详细过程

目录 1.更新系统 2. 安装依赖包 3.添加 Docker YUM 仓库 4.安装 Docker 5.启动 Docker 6.设置 Docker 开机自启 7.测试 Docker 1.更新系统 dnf update 这里直接输入y&#xff0c;耐心等待更新即可 直到看到complete表示更新完毕 2. 安装依赖包 Docker 需要一些依赖包才能正常…

什么是工业互联网?5G到底能在工业互联网中承担哪些重任呢?

一. 从消费互联网到工业互联网 在这个互联网如我们生活中的水和电一样无孔不入的时代&#xff0c;不能联网的设备是可耻的。它们像是一个一个的信息孤岛&#xff0c;原始而静寂。 然而50年前&#xff0c;这样的信息孤岛却是这个世界的常态&#xff0c;直到美国阿帕网的诞生…

运营-7.内容模型

在内容产品生态中&#xff0c;核心就是内容&#xff0c;内容驱使着所有的角色运转。具体而言&#xff0c;在整个生态模型中&#xff0c;内容的链条从上游 到下游的环节如下&#xff1a; PGC&#xff08;Professionally-generated Content&#xff09;专业生产内容 传统的门户…