当前位置: 首页 > article >正文

C++笔试训练day_1

文章目录

  • 选择题
  • 编程题

选择题

在这里插入图片描述

编程题

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    int n = 0;
    cin >> n;

    vector<int> v;
    v.resize(3 * n);
    int x = 0;
    for(int i = 0; i < v.size(); i++)
    {
        cin >> v[i];
    }

    sort(v.begin(), v.end());
    //int sum = 0;
    long long sum = 0;
    for(int j = 0; j < n; j++)
    {
        sum += v[v.size() - (j + 1) * 2];
    }
    cout << sum << endl;

    return 0;
}
// 64 位输出请用 printf("%lld")

在本题中最重要的就是怎么进行分组,然后怎么取到每组里面的中位数:我们选择通过resize扩容vector然后输入数据,去对这组数据进行排序,而分组方式是第一组取一个最小值和最大的两个值,第二组取次小值和次大的两个值,一次类推,这样就保证了我们一定可以去取到次大的值。
在这里插入图片描述
因此中位数就是和6,结果sum就是9
而在已经排好序的vector中怎么直接去取到这两组中的中位数呢?
此时就要借助一个公式:**v.size() - 2 * (i + 1)**其中i表示第几组
第0组也就是第1组:中位数下标为6 - 2 = 4
第1组也就是第2组:中位数下标为6 - 4 = 2
其实这个公式也就是从后向前依次取倒数第2个值,size - 2,size - 4就是倒数第二个值和倒数第4个值,注意size值比下标多1
2.
在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

int main() {
    string str1, str2;
    getline(cin, str1);
    getline(cin, str2);
    int hash[256] = {0};
    for(int i = 0; i < str2.size(); i++)
    {
        hash[str2[i]]++;
    }

    string s;
    for(int j = 0; j < str1.size(); j++)
    {
        if(hash[str1[j]] == 0)
        {
            s += str1[j];
        }
    }
    cout << s << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

解题思路:利用哈希映射的特性来解决上述问题,就可以以O(n)的复杂度解决问题,先把不能出现的字符映射到hash表上,在对str1进行遍历,如果它在hash上对应的字符为0,就证明这个字符能出现。注意本题使用getline输入一行字符串


http://www.kler.cn/a/155670.html

相关文章:

  • springboot 之 整合springdoc2.6 (swagger 3)
  • Objection
  • Autosar CP DDS规范导读
  • 计算机毕业设计必看必学35755flask旅游景区热度可视化平台原创定制程序,java、PHP、python、小程序、文案全套、毕设成品等
  • javascript 函数【知识点整理】
  • C语言第九周课——经典算法
  • Linux网络之连接跟踪 conntrack
  • gitlab 代码提交账户信息修改
  • “大型”基础模型中幻觉的调查
  • 工程数学笔记 | 傅里叶级数/变换的本质理解
  • 1949-2021年全国31省铁路里程数据
  • Java数据结构之《构造哈夫曼树》题目
  • 项目设计---网页五子棋
  • ArrayList 与 顺序表 (附洗牌算法)!
  • 软件设计模式原则(三)单一职责原则
  • SpringSecurity和JWT实现认证和授权
  • wvp gb28181 pro 平台国标级连功能说明
  • SSM框架(五):Maven进阶
  • SpringMVC基础
  • 「Linux」进程等待与替换
  • Linux 上的容器技术
  • Linux服务器初次使用需要的环境配置
  • LASSO vs GridSearchCV
  • 12.03 二叉树简单题2
  • LeetCode刷题---路径问题
  • Hdoop学习笔记(HDP)-Part.08 部署Ambari集群