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

算法|牛客网华为机试31-40C++

牛客网华为机试
上篇:算法|牛客网华为机试21-30C++

文章目录

  • HJ31 单词倒排
  • HJ32 密码截取
  • HJ33 整数与IP地址间的转换
  • HJ34 图片整理
  • HJ35 蛇形矩阵
  • HJ36 字符串加密
  • HJ37 统计每个月兔子的总数
  • HJ38 求小球落地5次后所经历的路程和第5次反弹的高度
  • HJ39 判断两个IP是否属于同一子网
  • HJ40 统计字符

HJ31 单词倒排

题目描述:
在这里插入图片描述

解题思路:
for循环遍历一次,从后往前,如果是字符组成单词等遇到空格或者非字母输出。
解法:

#include <iostream>
#include <string>
using namespace std;int main() {string str;getline(cin, str);string s = "";for(int i = str.size()-1;i>=0;--i){ // 如果是字母组单词if((str.at(i)>='a' && str.at(i) <= 'z')|| (str.at(i)>='A' && str.at(i) <= 'Z'))s = str.at(i)+s;// 如果不是字母加空格else{cout<<s<<" ";s = "";}}// 输出最后一个单词cout<<s<<" ";return 0;
}

HJ32 密码截取

题目描述:
在这里插入图片描述

解题思路:
题解 | #密码截取#
解法:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;int main() {string s;while (cin>>s) {int n = s.length();vector<vector<bool>> dp(n,vector<bool>(n,false)); // dp[j][i]=1表示从j到i是回文子串int maxlen = 1; // 初始为1for(int i=0;i<n;++i){for(int j=0;j<=i;++j){if(i == j) // 奇数长度子串dp[j][i] = true;else if (i-j == 1)  // 偶数长度子串dp[j][i] = (s[i] == s[j]);elsedp[j][i] = (s[i] == s[j] && dp[j+1][i-1]);  // 这两个字符相等 同事中间缩也要相等if(dp[j][i]&& i-j+1>maxlen) // 取最大maxlen = i-j+1;}}cout<<maxlen<<endl;}return 0;
}

HJ33 整数与IP地址间的转换

题目描述:
在这里插入图片描述

解题思路:
使用位运算符。
解法:

#include <iostream>
using namespace std;int main()
{long long int a,b,c,d;long long int num;// 使用scanf函数从标准输入读取四个整数,这些整数由点.分隔,代表IPv4地址的四个部分。// EOF是文件结束标志,当输入结束时返回EOF,循环结束。while(scanf("%lld.%lld.%lld.%lld",&a,&b,&c,&d)!=EOF){cin>>num;// 将a左移24位,b左移16位,c左移8位,然后将它们与d相加,得到IPv4地址的整数形式,并输出。// <<是位左移运算符,将一个数的二进制表示向左移动指定位数,右边补0。// 例如,a<<24将a的二进制表示向左移动24位,相当于将a乘以2^24。cout<<(a<<24)+(b<<16)+(c<<8)+d<<endl;// 将整数num右移24位,得到最左边的8位,即IPv4地址的第一个部分,并赋值给a。// >>是位右移运算符,将一个数的二进制表示向右移动指定位数,左边补符号位(正数补0,负数补1)。// 这里由于num是无符号整数,所以左边补0。a = num>>24;// 从num中减去a左移24位的结果,移除num中最高的8位,更新num的值。num = num-(a<<24);// 将更新后的num右移16位,得到接下来的8位,即IPv4地址的第二个部分,并赋值给b。b = num>>16;// 从num中减去b左移16位的结果,移除num中接下来的8位,更新num的值。num = num-(b<<16);// 将更新后的num右移8位,得到接下来的8位,即IPv4地址的第三个部分,并赋值给c。c = num>>8;// 从num中减去c左移8位的结果,移除num中接下来的8位,得到最低的8位,// 即IPv4地址的第四个部分,并赋值给d。d = num-(c<<8);// 输出转换后的IPv4地址。cout<<a<<"."<<b<<"."<<c<<"."<<d<<endl;}
}

HJ34 图片整理

题目描述:
在这里插入图片描述

解题思路:
C++|sort函数
直接用sort函数就是按着ASCII码从小到大排序的。
在这里插入图片描述

解法:

#include <algorithm>
#include <iostream>
using namespace std;int main() {string str;cin>>str;sort(str.begin(), str.end());cout<<str;return 0;
}

HJ35 蛇形矩阵

题目描述:
在这里插入图片描述

解题思路:
找每行每列的相加差1的数学规律,再每行输出。
解法:

#include<iostream>
#include<vector>
using namespace std;int main(){int n; while(cin >> n){//起始元素为1int k = 1;//遍历每一行for(int i = 1; i <= n; i++){ //输出每行首cout << k << " ";  int temp = k;//遍历本行的数 从加2开始每个数相加多1for(int j = i + 1; j <= n; j++){ //每个数相差为jtemp += j; cout << temp << " ";}cout << endl;//下一行的首为这行首加上这行行号每行行首也是从1开始多加1个k += i; }}return 0;
}

HJ36 字符串加密

题目描述:
在这里插入图片描述

解题思路:
暴力解。
解法:

#include<iostream>
#include<string>
#include<cctype>
#include<vector>
#include<algorithm>
using namespace std;int main(){string key, words;while(cin >> key >> words){vector<char> v;for(int i = 0; i < key.length(); i++){ //遍历字符串keykey[i] = toupper(key[i]); //全部转大写auto it = find(v.begin(), v.end(), key[i]); //查找是否加入过了if(it == v.end()) //非重复加入v.push_back(key[i]);}for(char c = 'A'; c <= 'Z'; c++){ //从A遍历到Zauto it = find(v.begin(), v.end(), c); //没有出现过if(it == v.end()) v.push_back(c); //才加入}string output = "";for(int i = 0; i < words.length(); i++){ //遍历要加密的字符串if(islower(words[i])) //遇到小写字符output += v[words[i] - 'a'] + 32; //需要在转出来的大写字母基础上加32elseoutput += v[words[i] - 'A']; //大写字母直接替换}cout << output << endl;}return 0;
}

HJ37 统计每个月兔子的总数

题目描述:
在这里插入图片描述

解题思路:
C++|斐波那契数列
解法:

#include <iostream>
#include <vector>
using namespace std;int main() {int num;cin >> num;if (num < 3) {cout << 1;return 0;}// 初始化数组,存储每个月的兔子对数vector<int> rabbits(num + 1, 0);rabbits[1] = 1; // 第一个月有1对兔子rabbits[2] = 1; // 第二个月有1对兔子// 计算每个月的兔子对数for (int i = 3; i <= num; ++i) {// 每个月的兔子对数是前两个月兔子对数的和rabbits[i] = rabbits[i - 1] + rabbits[i - 2];}cout << rabbits[num];return 0;
}

HJ38 求小球落地5次后所经历的路程和第5次反弹的高度

题目描述:
在这里插入图片描述
解题思路:
计算第5次落地后球经过的距离,除了第一次只经过一次,所以距离最后在减去初始长度,高度每次减去一半。
解法:

#include <iostream>
using namespace std;int main() {double height;cin>>height;double lenght = 0,h = height;for (int i=0; i<5; ++i) {// 回弹上下路径一样lenght += h*2;h =  h/2;}// 减去第一次落地的*2lenght -= height;cout<<lenght<<endl<<h;return 0;
}

HJ39 判断两个IP是否属于同一子网

题目描述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路:
题解 | #判断两个IP是否属于同一子网#
解法:

#include <iostream>
#include <vector>using namespace std;int main()
{// 子网掩码vector<int> mask(4,0);// ip地址vector<int> ip1(4,0);vector<int> ip2(4,0);char c;while (cin>>mask[0]>>c>>mask[1]>>c>>mask[2]>>c>>mask[3])//输入掩码{int flag = -1;//结果cin>>ip1[0]>>c>>ip1[1]>>c>>ip1[2]>>c>>ip1[3];//第一个ip地址cin>>ip2[0]>>c>>ip2[1]>>c>>ip2[2]>>c>>ip2[3];//第二个ip地址for(int i=0;i<4;i++)//两个ip地址和掩码每一段都要在0-255之间{if(mask[i]<0 || mask[i]>255 || ip1[i]<0 || ip1[i]>255 ||ip2[i]<0 || ip2[i]>255){flag = 1;//格式非法break;}}for(int i=0;i<3;i++)//掩码的网络号全为1,主机号全为0{if(mask[i]<255 && mask[i+1]>0){flag = 1;break;}}if(flag==1)//格式非法,输出1{cout<<flag<<endl;}else{for(int i=0;i<4;i++){if((mask[i]&ip1[i])!=(mask[i]&ip2[i]))//两个ip地址和掩码做AND操作{flag = 2;break;}else{//AND操作结果不相同flag = 0;}}cout<<flag<<endl;}}return 0;
}

HJ40 统计字符

题目描述:
在这里插入图片描述

解题思路:
暴力解。
解法:

#include <iostream>
using namespace std;int main() {string str;getline(cin,str);int english_char = 0,space_char = 0,num = 0,others = 0;for(auto c:str){if(c>='a'&&c<='z'){english_char++;}else if(c == ' '){space_char++;}else if(c>='0'&&c<='9'){num++;}else{others++;}}cout<<english_char<<endl<<space_char<<endl<<num<<endl<<others<<endl;return 0;
}

相关文章:

算法|牛客网华为机试31-40C++

牛客网华为机试 上篇&#xff1a;算法|牛客网华为机试21-30C 文章目录 HJ31 单词倒排HJ32 密码截取HJ33 整数与IP地址间的转换HJ34 图片整理HJ35 蛇形矩阵HJ36 字符串加密HJ37 统计每个月兔子的总数HJ38 求小球落地5次后所经历的路程和第5次反弹的高度HJ39 判断两个IP是否属于同…...

Mysql 大表limit查询优化原理

优化前( 查询耗时 114.1s) explain select * from link_exec_task limit 80000, 10 # 查询耗时 114.1s优化后( 查询耗时 0.121s) explain select * from link_exec_task a INNER JOIN (select id from link_exec_task limit 80000, 10) b on a.id b.id #0.121s原理&…...

封装axios、环境变量、api解耦、解决跨域、全局组件注入

官网&#xff1a;Axios中文文档 | Axios中文网 安装&#xff1a;npm install axios axios封装&#xff1a; // 1. 引入axios import axios from "axios"; import storage from /utils/storage // 2. 创建axios实例 const instance axios.create({baseURL: proces…...

CDGP|数据治理于企业而言到底有什么用?

在当今数字化时代&#xff0c;数据已成为企业最重要的资产之一。无论是大型跨国公司还是初创型企业&#xff0c;数据都扮演着驱动决策、优化运营和推动创新的关键角色。然而&#xff0c;仅仅拥有大量的数据并不足以确保企业的成功。如何有效管理、整合和利用这些数据&#xff0…...

Java学习教程,从入门到精通,Java数组(Arrays)语法知识点及案例(19)

1、Java数组&#xff08;Arrays&#xff09;语法知识点及案例 一、数组的基本概念 数组是多个相同类型的数据按照一定的顺序排列的集合&#xff0c;使用一个名字命名&#xff0c;通过编号&#xff08;索引&#xff09;的方式对这些数据进行统一管理。数组是引用数据类型&…...

11.4OpenCV_图像预处理习题02

1.身份证号码识别&#xff08;结果&#xff1a;身份证号识别结果为&#xff1a;911124198108030024&#xff09; import cv2 import numpy as np import paddlehub as hubdef get_text():img cv2.imread("images1/images/shenfen03.jpg")# 灰度化gray_img cv2.cvt…...

go的template示例

模板定义&#xff1a; type Config struct {{{- $len : len .DbConfigs -}}{{- $i : 0 -}}{{- range $key, $value : .DbConfigs}}{{title $key}} *DbConfig "yaml:\"{{lower $key}}\"" {{if lt $i (sub $len 1)}},{{end}}{{- $i add $i 1 -}}{{- end…...

『YOLO』| 断点训练、解决训练中断异常情况

文章目录 方法一方法二 当yolo在训练的时候&#xff0c;如果训练中断或者出现异常&#xff0c;可通过修改代码&#xff0c;从上一次断掉处重新训练&#xff0c;实现断点续训。 方法一 第一种方法&#xff1a; 按照官方给出的恢复训练代码&#xff0c;用yolo命令格式&#xff…...

MQTT+Disruptor 提高物联网高并发

基于springboot2.5.7 废话不多说&#xff0c;直接上干货&#xff1a; Slf4j Configuration EnableConfigurationProperties(MqttProperties.class) IntegrationComponentScan(basePackages {"扫描包路径","扫描包路径"}) public class MqttAutoConfig {…...

SpringBoot项目集成ONLYOFFICE

ONLYOFFICE 文档8.2版本已发布&#xff1a;PDF 协作编辑、改进界面、性能优化、表格中的 RTL 支持等更新 文章目录 前言ONLYOFFICE 产品简介功能与特点Spring Boot 项目中集成 OnlyOffice1. 环境准备2. 部署OnlyOffice Document Server3. 配置Spring Boot项目4. 实现文档编辑功…...

用于nodejs的开源违禁词检测工具 JavaScript node-word-detection

地址 : https://www.npmjs.com/package/node-word-detection github地址: https://github.com/xiaobaidadada/node-word-detection 非常节省内存的轻量级快速违禁词、词典库 检测工具 、 50万个词大约需要300MB内存、被检测的文本100字内结果在1毫秒左右。本项目没有提供词库请…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求&#xff0c;一般都是一个屏幕上有显示多个摄像头捕捉到的画面&#xff0c;这一节&#xff0c;我们是从文件中读取多个文件&#xff0c;显示在屏幕上。...

Linux权限问题(账号切换,权限,粘滞位)

1.什么是权限&#xff1f; 在Linux下有两种用户&#xff0c;分别是超级用户&#xff08;root&#xff09;和普通用户。超级用户可以在Linux下做任何事情&#xff0c;几乎不受限制&#xff0c;而普通用户一般只能在自己的工作目录下&#xff08;/home/xxx&#xff09;工作&#…...

el-upload,上传文件,后端提示信息,前端需要再次重新上传(不用重新选择文件)

1.el-upload 上传附件&#xff1a; <el-uploadref"upload":action"upload.url ?updateSupport upload.updateSupport":auto-upload"false":disabled"upload.isUploading":headers"upload.headers":limit"1"…...

数字信号处理Python示例(5)使用实指数函数仿真PN结二极管的正向特性

文章目录 前言一、二极管的电流-电压关系——Shockley方程二、PN结二极管正向特性的Python仿真三、仿真结果分析写在后面的话 前言 使用Python代码仿真了描述二极管的电流-电压关系的Shockley方程&#xff0c;对仿真结果进行了分析&#xff0c;说明在正向偏置区域&#xff0c;…...

ctfshow(89,90,92,93)--PHP特性--intval函数

Web89 源代码&#xff1a; include("flag.php"); highlight_file(__FILE__);if(isset($_GET[num])){$num $_GET[num];if(preg_match("/[0-9]/", $num)){die("no no no!");}if(intval($num)){echo $flag;} }审计 GET传参num。 如果在参数num中…...

构建ubuntu22.04.4私有源服务以及配置ubuntu私有源

构建ubuntu22.04.4私有源服务以及配置ubuntu私有源 一、环境说明1.1 私有源服务器1.2 客户机二 、构建私有源服务2.1 服务构建2.2 发布新的deb包到源服务器1. 准备新的 `.deb` 包2. 将 `.deb` 包添加到仓库目录3. 更新 `Packages` 文件4. 更新仓库的发布文件(可选)5. 通知客户…...

模块功能的描述方法

目录 行为描述方法 语句块 过程赋值语句 高级程序语句 循环语句 数据流描述 结构描述 混合描述方法 module 模块名(端口列表); // 模块声明// 端口定义input [数据类型] [位宽] 输入端口列表; output [数据类型] [位宽] 输出端口列表; inout [数据类…...

【WPF】MatrixTransform类

【WPF】MatrixTransform类 主要特性使用场景示例 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;MatrixTransform 类是用于表示一个仿射变换的类&#xff0c;它允许开发者通过一个矩阵来定义一个二维空间中的线性变换。这种变换可以包括平移&…...

【C++】继承的理解

1.继承的概念和定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象 程序…...

day50 图论章节刷题Part02(99.岛屿数量 深搜、99.岛屿数量 广搜、100.岛屿的最大面积)

前言&#xff1a;前段时间论文开题落下了很多进度&#xff0c;今天开始会尽快赶上 99.岛屿数量 深搜 思路&#xff1a;对地图进行遍历遇到一个没有遍历过的陆地节点&#xff0c;计数器就1&#xff0c;并把该节点所能遍历到的陆地都标记上&#xff1b;遇到标记过的陆地节点和海…...

超详细从基准将VMware ESXi 升级到 vSphere 6.7U1教程

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01; “ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福…...

华为OD机试 - 打印机队列 - 优先队列(Java 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…...

MatrixOne 助力西安天能替换MySQL+MongoDB+ES打造一体化物联网平台

物联网&#xff08;IoT&#xff09;时代&#xff0c;企业正以前所未有的速度加快数字化转型。西安天能软件科技有限责任公司&#xff08;Skyable&#xff09;作为工业物联网领域的领先企业&#xff0c;携手MatrixOne&#xff0c;共同构建新一代一体化物联网平台&#xff0c;实现…...

正则表达式---元字符

简介 正则表达式分为两种语法&#xff1a;POSIX标准的语法&#xff0c;Perl语法。 正则表达式的POSIX规范&#xff0c;分为基本型正则表达式&#xff08;Basic Regular Expression, BRE&#xff09;&#xff0c;扩展型正则表达式&#xff08;Extended Regular Expression&…...

数据库Redis篇

系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏&#xff1a;点击进入 后端开发面经 关注走一波 秋招阶段&#xff0c;面过很多大中小厂&#xff0c;积攒了…...

在区块链技术中,什么是权益证明(PoS)?

权益证明&#xff08;Proof of Stake, PoS&#xff09;是一种与工作量证明&#xff08;Proof of Work, PoW&#xff09;类似的共识机制&#xff0c;但它通过不同的方式来确保区块链网络的安全性和一致性。PoS的主要目标是解决PoW中存在的高能耗问题&#xff0c;并提高网络的扩展…...

Spring Boot——日志介绍和配置

1. 日志的介绍 在前面的学习中&#xff0c;控制台上打印出来的一大堆内容就是日志&#xff0c;可以帮助我们发现问题&#xff0c;分析问题&#xff0c;定位问题&#xff0c;除此之外&#xff0c;日志还可以进行系统的监控&#xff0c;数据采集等 2. 日志的使用 在程序中获取日…...

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景&#xff1a; 1.为企业招聘决策提供科学的依据和参考&#xff0c;可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求&#xff0c;从而做出更明智的招聘和求职决策。…...

【真题笔记】16年系统架构设计师要点总结

【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM&#xff08;能力成熟度模型&#xff09;螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP&#xff08;面向构件的编程&#xff09;构件原子构件模块S…...