深信服2025届全球校招研发笔试-C卷(AK)

前面14个填空题

T1

已知 子数组 定义为原数组中的一个连续子序列。现给定一个正整数数组 arr,请计算该数组内所有可能的奇数长度子数组的数值之和。

输入描述

输入一个正整数数组arr

输出描述

所有可能的奇数长度子数组的和

示例 1
输入

1,4,2,5,3

输出

58

说明

解释:所有奇数长度子数组和它们的和为:
[1] = 1
[4] = 4
[2] = 2
[5] = 5
[3] = 3
[1,4,2] = 7
[4,2,5] = 11
[2,5,3] = 10
[1,4,2,5,3] = 15
我们将所有值求和得到1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58

C++实现代码

#include <bits/stdc++.h>
#include <iostream>
#include <string> 
#include <sstream>using namespace std;int main() {string input;vector<int> v;getline(cin, input);stringstream ss(input);string item;while (getline(ss, item, ',')) {v.push_back(stoi(item));}long long ans = 0;int n = v.size();for (int i = 0; i < n; i++) {long long cur = 0;int cnt = 0;for (int j = i; j < n; j++) {cur += v[j];cnt += 1;if (cnt % 2) {ans += cur;}}}cout << ans << endl;return 0;
}

在这里插入图片描述

T2

平台运行过程中出现异常时一般会将信息记录在后台日志文件中,定位问题时通常使用关键字进行过滤。正则表达式具备很强大的文本匹配功能,能够快速高效地处理文本。常见元字符为:

^:匹配字符串开头。
$:匹配字符串结尾。
.:匹配任意字符。
*:匹配前面的字符零次或多次。
+:匹配前面的字符一次或多次。
?:匹配前面的字符零次或一次。

给定一个输入字符串s和一个字符模式p,s和p的长度均在100以内,要求实现一个支持’.‘和’*'的正则表达式匹配。字符模式必须能够完全匹配输入字符串。

如果匹配成功返回1,匹配失败返回0

请设计一个时间复杂度为 O(mn)或更优的算法来解决这个问题。如果使用内置正则库得0分。

输入描述

第一行输入为字符串s
第二行输入为字符模式p

输出描述

如果匹配成功返回1,匹配失败返回0

示例 1

输入

aaa
a*

输出

1

说明

通配符*可以匹配aa

示例 2

输入

abaa
ab*a

输出

0

说明

通配符*匹配前面的字符零次或多次,由于前面的字符是b,无法匹配a

示例 3

输入

abaa
ab.a

输出

1

说明

通配符.可以匹配任意字符,因此能够匹配a

C++实现代码

#include <bits/stdc++.h>
#include <iostream>using namespace std;bool isMatch(string s, string p) {int m = s.size(), n = p.size();vector<vector<bool>> dp(m + 1, vector<bool>(n + 1, false));dp[0][0] = true;for (int j = 1; j <= n; j++) {if (p[j - 1] == '*') {// s为空字符串的时候, *匹配0个元素, 例如"a*" = ""dp[0][j] = dp[0][j - 2];}}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (s[i - 1] == p[j - 1] || p[j - 1] == '.') {dp[i][j] = dp[i - 1][j - 1];}else if (p[j - 1] == '*') {// *匹配0次if (s[i - 1] != p[j - 2] && p[j - 2] != '.') {dp[i][j] = dp[i][j - 2];// *匹配多次}else {dp[i][j] = dp[i][j - 2] || dp[i - 1][j];}}}}return dp[m][n];
}int main() {string s, p;cin >> s >> p;if (isMatch(s, p)) {cout << 1 << endl;}else {cout << 0 << endl;}return 0;
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

T3

给定存在 N个元组的集合,每个元组里面的值为(等级,价格),等级和价格都是非负整数。在集合中选取数量大于0小于等于N的元组,要求这些元组的等级差不能超过x,并且它们的价格之和最大。最后输出最大的价格

输入描述

第一行包含两个整数 N 和 x (1 ≤ n ≤ 105,1 ≤ x ≤ 1010) —— 分别是给定的元组集合的数量和等级差。
接下来的 N 行是元组的具体数值,每一行为一个元组的两个值,等级和价格,数字之间用空格隔开

输出描述

输出选取的元组最大的价格之和

示例 1

输入

4 2
0 14
3 16
8 9
10 18

输出

27

说明
总共有4个元组,限制选取的元组等级差为2,那么只能选第三和第四个,或者只选一个。对比这几种选组,价格之和最高的是选第三和第四个元组,结果为27。

C++实现代码

#include <bits/stdc++.h>
#include <iostream>using namespace std;int main() {int N;long long x;cin >> N >> x;vector<vector<long long>> v(N, vector<long long>(2));for (int i = 0; i < N; i++) {cin >> v[i][0] >> v[i][1];}sort(v.begin(), v.end());long long ans = 0;int i = 0, j = 0;long long cur = v[0][1];while (j < N) {if (v[j][0] - v[i][0] <= x) {ans = max(ans, cur);j++;if (j < N) {cur += v[j][1];}}else {cur -= v[i][1];i++;}}cout << ans << endl;return 0;
}

在这里插入图片描述

T4

小明正在一个由m x n的单元格组成的游戏地图上寻找金币,地图由一个二维整数数组 grid 表示。每个 grid[i][j] 都表示地图上单元格 (i, j) 的金币数量。如果 grid[i][j]是 0,表示这个单元格没有金币。如果 grid[i][j]是正数,表示这个单元格有grid[i][j] 个金币。如果 grid[i][j]是-1,表示这个单元格是不可到达的区域。小明的起始位置是左上角,也就是点(0,0),并且每次可以向上、下、左、右四个方向移动,但不能移出游戏地图。小明有一个特殊的技能: 他可以使用这个技能将一个不可到达的区域(-1的单元格)变为可达区域,但是他只能使用一次这个技能。使用技能后,不可到达的区域会变成0,也就是没有金币但是可以通过。
你的任务是帮助小明计算,他最多可以收集多少个金币。

输入描述

m,n范围为[0,100]
grid[i][j]值范围为[-1,5],其中0≤i≤m,0≤j≤n

输出描述

输出收集金币数

示例 1

输入

[1,-1]
[1,1]

输出

2

说明

输入一个2*2的二维数组,小明将grid [0][1](或grid[1][0])的-1变成0则可收集到价值2金币,故输出2

示例2

输入

[-1]

输出

0

说明

输入一个1*1的二维数组,小明无论是否使用技能都无法获得金币,故输出0

C++实现代码

#include <bits/stdc++.h>
#include <iostream>
#include <string>
#include <sstream>
#include <deque>using namespace std;int main() {vector<vector<int>> v;string line;while (getline(cin, line) && !line.empty()) {istringstream iss(line.substr(1, line.size() - 2));string token;vector<int> row;while (getline(iss, token, ',')) {if (!token.empty()) {row.push_back(stoi(token));}}v.push_back(row);}deque<pair<int, int>> dq;vector<vector<int>> vis;int m, n;m = v.size();n = v[0].size();vis.assign(m, vector<int>(n, 0));function<int(void)> func = [&](void){if (v[0][0] == -1) {return 0;}dq.clear();vis.assign(m, vector<int>(n, 0));dq.push_back({ 0, 0 });vis[0][0] = 1;// 下上右左int dx[] = { 0, 0, 1, -1 };int dy[] = { 1, -1, 0, 0 };int ans = 0;while (!dq.empty()) {auto [x, y] = dq.front();dq.pop_front();ans += v[x][y];for (int i = 0; i < 4; i++) {int nx = x + dx[i], ny = y + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m && v[nx][ny] >= 0 && !vis[nx][ny]) {vis[nx][ny] = 1;dq.push_back({ nx, ny });}}}return ans;};int ans = func();for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (v[i][j] == -1) {v[i][j] = 0;ans = max(ans, func());v[i][j] = -1;}}}cout << ans << endl;return 0;
}

在这里插入图片描述
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

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

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

相关文章

使用 Light Chaser 进行大屏数据可视化

引言 在当今数据驱动的世界中&#xff0c;数据可视化变得越来越重要。Light Chaser 是一款基于 React 技术栈的大屏数据可视化设计工具&#xff0c;通过简单的拖拽操作&#xff0c;你可以快速生成漂亮、美观的数据可视化大屏和看板。本文将介绍如何使用 Light Chaser 进行数据…

828华为云征文|部署在线文档应用程序 CodeX Docs

828华为云征文&#xff5c;部署在线文档应用程序 CodeX Docs 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 CodeX Docs3.1 CodeX Docs 介绍3.2 CodeX Docs 部署3.3 CodeX…

RabbitMQ应用

RabbitMQ 共提供了7种⼯作模式, 进⾏消息传递 一、七种模式的概述 1、Simple(简单模式) P:生产者,就是发送消息的程序 C:消费者,就是接收消息的程序 Queue:消息队列,类似⼀个邮箱, 可以缓存消息; ⽣产者向其中投递消息, 消费者从其中取出消息 特点: ⼀个⽣产者P,⼀…

小米2025届软件开发工程师(C/C++/Java)(编程题AK)

选择题好像也是25来个 编程题 T1 题目描述 小明喜欢解决各种数学难题。一天&#xff0c;他遇到了一道有趣的题目:他需要帮助他的朋友们完成一个排序任务。小明得到两个长度为 n 的数组a[]和b[]。他可以在两个数组对应位置进行交换&#xff0c;即选定一个位置 i &#xff0c…

《pyqt+open3d》open3d可视化界面集成到qt中

《pyqtopen3d》open3d可视化界面集成到qt中 一、效果显示二、代码三、资源下载 一、效果显示 二、代码 参考链接 main.py import sys import open3d as o3d from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget from PyQt5.QtGui import QWindow from PyQt5.Qt…

App模拟下载场景的demo

摘要 目的&#xff1a;提供一个稳定的下载场景&#xff0c;可以手动触发和定时触发下载&#xff0c;每次下载相同大小文件&#xff0c;研究下载场景的功耗影响 原理&#xff1a;把电脑当做服务器&#xff0c;手机测试App固定下载电脑存放的某个XXXMB的大文件&#xff0c;基于…

C语言进阶版第14课—内存函数

文章目录 1. memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 模拟实现memcpy函数 2. memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 3. memset函数4. memcmp函数 1. memcpy函数的使用和模拟实现 1.1 memcpy函数的使用 memcpy函数的原形voi…

英语音标与重弱读

英语中&#xff0c;比较重要的是音标。但事实上&#xff0c;我们对音标的学习还是比较少的&#xff0c;对它的理解也是比较少的。 一、音标 2个半元音 [w][j] 5个长元音&#xff1a;[i:] [ə:] [ɔ:] [u:] [ɑ:] 7个短元音&#xff1a;[i] [ə] [ɔ] [u] [] [e] [ʌ] 8个双元音…

第100+26步 ChatGPT学习:概率校准 Bayesian Binning into Quantiles

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章&#xff1a;《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

【2】图像视频的加载和显示

文章目录 【2】图像视频的加载和显示一、代码在哪写二、创建和显示窗口&#xff08;一&#xff09;导入OpenCV的包cv2&#xff08;二&#xff09;创建窗口&#xff08;三&#xff09;更改窗口大小 & 显示窗口&#xff08;四&#xff09;等待用户输入补充&#xff1a;ord()函…

【Unity踩坑】Unity更新Google Play结算库

一、问题描述&#xff1a; 在Google Play上提交了app bundle后&#xff0c;提示如下错误。 我使用的是Unity 2022.01.20f1&#xff0c;看来用的Play结算库版本是4.0 查了一下文档&#xff0c;Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…

【视频目标分割-2024CVPR】Putting the Object Back into Video Object Segmentation

Cutie 系列文章目录1 摘要2 引言2.1背景和难点2.2 解决方案2.3 成果 3 相关方法3.1 基于记忆的VOS3.2对象级推理3.3 自动视频分割 4 工作方法4.1 overview4.2 对象变换器4.2.1 overview4.2.2 Foreground-Background Masked Attention4.2.3 Positional Embeddings 4.3 Object Me…

cpp,git,unity学习

c#中的? 1. 空值类型&#xff08;Nullable Types&#xff09; ? 可以用于值类型&#xff08;例如 int、bool 等&#xff09;&#xff0c;使它们可以接受 null。通常&#xff0c;值类型不能为 null&#xff0c;但是通过 ? 可以表示它们是可空的。 int? number null; // …

使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南

使用 SSH 连接 Docker 服务器&#xff1a;IntelliJ IDEA 高效配置与操作指南 本文详细介绍了如何在 2375 端口未开放的情况下&#xff0c;通过 SSH 连接 Docker 服务器并在 Idea 中进行开发。通过修改用户权限、生成密钥对以及配置 SSH 访问&#xff0c;用户可以安全地远程操作…

NASA数据集:ATLAS/ICESat-2 L3B 每日和每月网格化海冰自由面高度,第 4 版

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Daily and Monthly Gridded Sea Ice Freeboard, Version 4 简介 ATLAS/ICESat-2 L3B Daily and Monthly Gridded Sea Ice Freeboard, Version 4数据是由NASA的ATLAS&#xff08…

Ubuntu 系统崩了,如何把数据拷下来

问题描述&#xff1a; Linux系统中安装输入法后&#xff0c;重启后&#xff0c;导致系统无法进入&#xff0c;进入 recovery mode下的resume 也启动不了&#xff0c;所以决定将需要的东西复制到U盘 解决方案&#xff1a; 1.重启ubuntu&#xff0c;随即点按Esc进入grub菜单&am…

OpenStack Yoga版安装笔记(十五)Horizon安装

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行&#xff0c;基本按照OpenStack Installation Guide顺序执行&#xff0c;主要内容包括&#xff1a; 环境安装 &#xff08;已完成&#xff09;OpenStack…

HarmonyOS/OpenHarmony Audio 实现音频录制及播放功能

关键词&#xff1a;audio、音频录制、音频播放、权限申请、文件管理 在app的开发过程中时常会遇见一些需要播放一段音频或进行语音录制的场景&#xff0c;那么本期将介绍如何利用鸿蒙 audio 模块实现音频写入和播放的功能。本次依赖的是 ohos.multimedia.audio 音频管理模块&am…

AI日常绘画【国庆海报】:盛世迎华诞,Flux国庆节海报制作教程

大家好我是极可菌&#xff01;&#xff01;&#xff01; 马上就要到祖国母亲的节日了&#xff0c;想想心里都美滋滋的&#xff0c;终于可以放松一下了。相信AI绘画关于国庆主题肯定也会精彩纷呈吧&#xff0c;今天和大家分享几组关于国庆海报的制作教程。 本文使用基于Flux的相…

windows 驱动实例分析系列-定时日志的COM驱动

本文章的前置文章为: windows 驱动编写原则 windows COM驱动 案例 windows COM驱动的I/O处理 在前面的设计中,主要是对windows提供的VirtualSerial源代码的讲解,但是那个驱动其实是一个空壳驱动,用于学习的,在I/O处理中,也讲述了serial I/O处理的本质,接下来会将这些…