笔试面试相关记录(5)
(1)不包含重复字符的最长子串的长度
#include <iostream>
#include <string>
#include <map>using namespace std;int getMaxLength(string& s) {int len = s.size();map<char, int> mp;int max_len = 0;int left = 0;int i = 0;while (i < len) {if (mp[s[i]] > 0) {max_len = max(max_len, i-left);while (mp[s[i]] > 0) {mp[s[left]]--;left++;}} mp[s[i]]++;i++;}max_len = max(max_len, i-left);return max_len;
}int main() {string str;while(cin >> str) {cout << getMaxLength(str) << endl;}return 0;
}
(2)小米基站问题,基站数组中,每个基站的x,y,q分别表示基站的坐标x和y,以及信号q,radius表示手机可以接收信号的范围,当手机距离基站的距离小于radius时,基站的信号为floor(q/(1+d)),求出一个信号最强的位置,如果有多个位置,按照字典序取第一个。
#include <iostream>
#include <vector>
#include <string>
#include <math.h>using namespace std;double distance(int x1, int y1, int x2, int y2) {return sqrt(pow(x1-x2, 2) + pow(y1-y2, 2));
}int main() {string str;std::getline(std::cin, str);int t = 0, n, radius;for (long unsigned i = 0; i < str.size(); i++) {if (isdigit(str[i])) {t = t*10 + (str[i]-'0');} else {n = t;t = 0;}}radius = t;int x, y, q;int min_x = 1e8, min_y = 1e8, max_x = 0, max_y = 0;vector<vector<int>> vec;for (int i = 0; i < n; i++) {scanf("%d,%d,%d", &x, &y, &q);vec.push_back({x,y,q});min_x = min(x, min_x);min_y = min(y, min_y);max_x = max(x, max_x);max_y = max(y, max_y);}vector<vector<int>> grid(max_x+1, vector<int>(max_y+1, 0));int max_q = 0, ans_x = 1e8, ans_y = 1e8;for (int i = 0; i < n; i++) {int n_x = vec[i][0], n_y = vec[i][1], q = vec[i][2];for (int j = -radius; j <= radius; j++) {for (int k = -radius; k <= radius; k++) {int new_x = n_x + j, new_y = n_y + k;double dis = distance(new_x, new_y, n_x, n_y);if (new_x >= 0 && new_y >= 0 && new_x <= max_x && new_y <= max_y && dis < radius) {grid[new_x][new_y] += floor(q/(1+dis));if (grid[new_x][new_y] > max_q) {max_q = grid[new_x][new_y];ans_x = new_x;ans_y = new_y;} else if (grid[new_x][new_y] == max_q && (new_x < ans_x || (new_x == ans_x && new_y < ans_y))) {ans_x = new_x;ans_y = new_y;}}}}}cout << ans_x << "," << ans_y << endl;}
(3)是一个拓扑排序问题,
输入n,表示n个任务
输入1:0,0:1表示任务1依赖任务0,任务0依赖任务1,问这个任务能不能完成?可以完成输出1,否则输出0;
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;int main() {int n;string str;while (cin >> n) {cin >> str;int t = 0;int a = 0, b = 0;int max_a = 0, max_b = 0;vector<vector<int>> vec;for (long unsigned i = 0; i < str.size(); i++) {if (isdigit(str[i])) {t = t*10 + (str[i]-'0');} else if (str[i] == ':') {a = t;t = 0;} else if (str[i] == ',') {max_a = max(max_a, a);max_b = max(max_b, t);vec.push_back({a, t});t = 0;}}max_a = max(max_a, a);max_b = max(max_b, t);vec.push_back({a, t});vector<vector<int>> grid(max_a+1, vector<int>(max_b+1, 0));for (int i = 0; i < n; i++) {grid[vec[i][0]][vec[i][1]] = 1;}queue<int> q;vector<int> dege(n, 0);for (int i = 0; i < n; i++) {int count = 0;for (int j = 0; j < n; j++) {if (grid[i][j] = 1) {count++;}}dege[i] = count;if (count == 0) {q.push(i);}}while (q.size()) {int node = q.front();q.pop();for (int i = 0; i < n; i++) {if (grid[i][node] == 1) {grid[i][node] = 0;dege[i]--;if (dege[i] == 0) {q.push(i);}}}}bool flag = false;for (int i = 0; i < n; i++) {if (dege[i]) {flag = true;break;}}if (flag) {cout << 0 << endl;} else {cout << 1 << endl;}}return 0;
}
(4)一个数组,表示每个工人的工作能力,现有一个工作需要ceil(n/2.0)个工人去完成,并且要求这些工人的工作能力之和大于等于target,求有多少种安排工人的方法。
输入
1(测试组数)
5 10(n,target)
3 2 3 4 5
输出7
#include <iostream>
#include <vector>
#include <set>
#include <math.h>
#include <string>
using namespace std;void backtrace(vector<int>& nums, int sum, long unsigned path, int& ans, long unsigned start, long unsigned worker_num, int target, string str, set<string>& set_str) {if (path == worker_num && sum >= target && set_str.find(str) == set_str.end()) {ans++;set_str.insert(str);return;}if (start >= nums.size() || path > worker_num) return;int len = nums.size();// 这个语句放在for循环外面,用于记录上次的结果,不放入for循环中string t = str;for (long unsigned i = start; i < len; i++) {// 这里一个错误导致弄了半天也没有弄出来,if (path == 0) str = to_string(i);// 下面的代码之前写的是str = str + "-" + to_string(i);这样写是有错误的// 因为每次选或者不选,是从上一次的结果后面进行添加的,如果这里使用了str = str + "-" + to_string(i);// 就会导致str在for循环中会被修改。else str = t + "-" + to_string(i);// 如果当前位置选择,则在上一次的结果上加上这次的数字backtrace(nums, sum+nums[i], path+1, ans, i+1, worker_num, target, str, set_str);// 当前位置不选择backtrace(nums, sum, path, ans, i+1, worker_num, target, t, set_str);}
}int main() {int T;while (cin >> T) {for (int times = 0; times < T; times++) {int n, target;cin >> n >> target;vector<int> nums(n, 0);int t;for (int i = 0; i < n; i++) {cin >> t;nums[i] = t;}long unsigned path = 0;// 如果使用ceil函数,记得要将其变成float或者double形式,如果是整数,就会出错。long unsigned worker_num = (n%2==1)?(n+1)/2:(n/2);string str = "";int ans = 0;set<string> set_str;backtrace(nums, 0, path, ans, 0, worker_num, target, str, set_str); cout << ans << endl;}}return 0;
}
(5)
#include <iostream>
using namespace std; void func(int a, int b, int c) {c = a*b;
}int main()
{int c;int a = 3, b = 3;func(a, b, c);cout << c << endl;printf("%d", c);return 0;
}
输出随机数,不是输出0
(6)
#include <iostream>
using namespace std; class T {
public:T() {cout << "T()" << endl;}};
int main()
{T* p = new T[3];return 0;
}
输出
T()
T()
T()
相关文章:
笔试面试相关记录(5)
(1)不包含重复字符的最长子串的长度 #include <iostream> #include <string> #include <map>using namespace std;int getMaxLength(string& s) {int len s.size();map<char, int> mp;int max_len 0;int left 0;int i …...
四、C#—变量,表达式,运算符(2)
🌻🌻 目录 一、表达式1.1 什么是表达式1.2 表达式的基本组成 二、运算符2.1 算术运算符2.1.1 使用 / 运算符时的注意事项2.1.2 使用%运算符时的注意事项 2.2 赋值运算符2.2.1 简单赋值运算符2.2.2 复合赋值运算符 2.3 关系运算符2.4 逻辑运算符2.4.1 逻辑…...
【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
JVM的内存分配及垃圾回收
内存分配 在了解Java的内存管理前,需要知道JVM中的内存分配。 栈 存储局部变量。在方法的定义中或在方法中声明的变量为局部变量;栈内存中的数据在该方法结束(返回或抛出异常或方法体运行到最后)时自动释放栈中存放的数据结构为…...
Python实现查询一个文件中的pdf文件中的关键字
要求,查询一个文件中的pdf文件中的关键字,输出关键字所在PDF文件的文件名及对应的页数。 import os import PyPDF2def search_pdf_files(folder_path, keywords):# 初始化结果字典,以关键字为键,值为包含关键字的页面和文件名列表…...
【计算机网络笔记一】网络体系结构
IP和路由器概念 两台主机如何通信呢? 首先,主机的每个网卡都有一个全球唯一地址,MAC 地址,如 00:10:5A:70:33:61 查看 MAC 地址: windows: ipconfig / alllinux:ifconfig 或者 ip addr 同一个网络的多…...
硕士应聘大专老师
招聘信息 当地人社局、学校(官方) 公众号(推荐): 辅导员招聘 厦门人才就业信息平台 高校人才网V 公告出完没多久就要考试面试,提前联系当地院校,问是否招人。 校招南方某些学校会直接去招老师。…...
Gram矩阵
Gram矩阵如何计算 Gram 矩阵是由一组向量的内积构成的矩阵。如果你有一组向量 v 1 , v 2 , … , v n v_1, v_2, \ldots, v_n v1,v2,…,vn,Gram 矩阵 G G G 的元素 G i j G_{ij} Gij 就是向量 v i v_i vi 和向量 v j v_j vj 的内积。数学上&#x…...
【数据结构】七大排序算法详解
目录 ♫什么是排序 ♪排序的概念 ♪排序的稳定性 ♪排序的分类 ♪常见的排序算法 ♫直接插入排序 ♪基本思想 ♪算法实现 ♪算法稳定性 ♪时间复杂度 ♪空间复杂度 ♫希尔排序 ♪基本思想 ♪算法实现 ♪算法稳定性 ♪时间复杂度 ♪空间复杂度 ♫直接选择排序 ♪基本思想 ♪算法…...
OpenCV之VideoCapture
VideoCaptrue类对视频进行读取操作以及调用摄像头。 头文件: #include <opencv2/video.hpp> 主要函数如下: 构造函数 C: VideoCapture::VideoCapture(); C: VideoCapture::VideoCapture(const string& filename); C: VideoCapture::Video…...
ESP32微控制器与open62541库: 详细指南实现OPC UA通信协议_C语言实例
1. 引言 在现代工业自动化和物联网应用中,通信协议起着至关重要的作用。OPC UA(开放平台通信统一架构)是一个开放的、跨平台的通信协议,被广泛应用于工业4.0和物联网项目中。本文将详细介绍如何在ESP32微控制器上使用C语言和open…...
怎样快速打开github.com
访问这个网站很慢是因为有DNS污染,被一些别有用心的人搞了鬼了, 可以使用火狐浏览器开启火狐浏览器的远程dns解析就可以了.我试了一下好像单独这个办法不一定有用,要结合修改hosts文件方法,双重保障 好像就可以了...
【C#】.Net基础语法二
目录 一、字符串(String) 【1.1】字符串创建和使用 【1.2】字符串其他方法 【1.3】字符串格式化的扩展方法 【1.4】字符串空值和空对象比较 【1.5】字符串中的转移字符 【1.6】大写的String和小写的string 【1.7】StringBuilder类的重要性 二、数组(Array) 【2.1】声…...
C++之this指针总结(二百二十)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
C++——如何正确的使用STL中的vector?
什么是vector? 在STL(标准模板库)中,vector是一种动态数组容器,可根据需要自动增长或缩小。它可以存储任意类型的元素,并且支持快速的随机访问。 vector是表示可变大小数组的序列容器vector采用的是连续的…...
【C语言】模拟实现内存函数
本篇文章目录 相关文章1. 模拟 memcpy 内存拷贝2. 模拟 memmove 内存移动 相关文章 【C语言】数据在内存中是以什么顺序存储的?【C语言】整数在内存中如何存储?又是如何进行计算使用的?【C语言】利用void*进行泛型编程【C语言】4.指针类型部…...
Jenkins学习笔记3
gitgithubjenkins: 架构图: 说明:jenkins知道github有更新了,就pull进行构建build,编译、自动化测试。然后部署到应用服务器。 maven java的项目构建工具。 在开发者电脑上创建空密码密钥对。 [rootgit-developer ~…...
基于单片机火灾报警器仿真设计
一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20采集温度值送到液晶1602显示。 3、MQ2采集烟雾值,送到液晶1602显示。 4、按键设置温度报警值,大于报警值,声光报警。 二、硬件设计 原理图如下: 三、单片机软件设计…...
阿里测开面试大全(一)附答案完整版
万字长文,建议收藏 1 什么是POM,为什么要使用它? POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操…...
STL-常用容器
string容器 string构造函数 string本质:类 string和char*区别: char* 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string类内部封装了很多成员方法 …...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
