算法学习——华为机考题库5(HJ31 - HJ35)

2024-02-04 03:52

本文主要是介绍算法学习——华为机考题库5(HJ31 - HJ35),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

算法学习——华为机考题库5(HJ31 - HJ35)

HJ31 单词倒排

描述

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

**数据范围:**字符串长度满足 1≤n≤10000
输入描述:
输入一行,表示用来倒排的句子

输出描述:
输出句子的倒排结果

示例

在这里插入图片描述

代码解析

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;int main() {string tmp;vector<string> date;while(getline(cin, tmp , ' ')){string mini;mini.clear();for(int i=0 ; i<tmp.size() ;i++){if((tmp[i] >= 'a' && tmp[i] <= 'z')||( tmp[i] >= 'A' && tmp[i] <= 'Z') ){mini += tmp[i];}else if(mini.size() > 0)  {date.push_back(mini);mini.clear();}if(i==tmp.size()-1 && mini.size() > 0) date.push_back(mini);}}// date[date.size()-1].pop_back();reverse(date.begin(), date.end());for(auto it:date)cout<<it<<' ';
}
// 64 位输出请用 printf("%lld")

HJ32 密码截取

描述

Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?

**数据范围:**字符串长度满足 1≤n≤2500
输入描述:
输入一个字符串(字符串的长度不超过2500)

输出描述:
返回有效密码串的最大长度

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <vector>
using namespace std;int main() {string Str;cin>>Str;int result = 0;vector<vector<bool>> dp(Str.size() , vector<bool>(Str.size(),false));for(int i=Str.size()-1 ; i>=0 ; i--){for(int j=i ; j<Str.size() ; j++){if(Str[i] == Str[j] && ( j-i<=1 || dp[i+1][j-1] == true )){dp[i][j] = true;if(j-i > result) result = j-i;}}}cout<<result+1;}
// 64 位输出请用 printf("%lld")

HJ33 整数与IP地址间的转换

描述

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001

组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

**数据范围:**保证输入的是合法的 IP 序列

输入描述:
输入
1 输入IP地址
2 输入10进制型的IP地址

输出描述:
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址

示例

在这里插入图片描述

代码解析

#include<iostream>
#include<sstream>
#include<regex>
#include<string>
using namespace std;int main(){string s;while(cin >> s){if(s.find_first_of('.') != string::npos){ //查找到有.的就是IP地址long num[4];stringstream(regex_replace(s, regex("\\."), " ")) >> num[0] >> num[1] >> num[2] >> num[3]; //用正则表达式分割后输入数组long output = num[0] << 24 | num[1] << 16 | num[2] << 8 | num[3]; //位运算组装cout << output << endl;}else{ //否则是整数long num;stringstream(s) >> num; //流输入转数字stringstream output;output << ((num >> 24) & 0xff) << "." << ((num >> 16) & 0xff) << "." << ((num >> 8) & 0xff) << "." << (num & 0xff); //流输出格式cout << output.str() << endl; //转字符串输出}}return 0;
}

HJ34 图片整理

描述

Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、“a"到"z”、"0"到"9"表示。

**数据范围:**每组输入的字符串长度满足 1≤n≤1000

输入描述:
一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。

输出描述:
Lily的所有图片按照从小到大的顺序输出

示例

在这里插入图片描述

代码解析

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;int main() {string Str;cin>>Str;sort(Str.begin(), Str.end());cout<<Str;
}
// 64 位输出请用 printf("%lld")

HJ35 蛇形矩阵

描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

例如,当输入5时,应该输出的三角形为:

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

输入描述:
输入正整数N(N不大于100)

输出描述:
输出一个N行的蛇形矩阵。

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <vector>
using namespace std;int main() {int N;vector<vector<int>> date;cin>>N;int num = 1;for(int i=0 ; i<N ;i++){vector<int> tmp;tmp.clear();for(int j=0 ; j<=i ; j++){tmp.push_back(num);num++;}date.push_back(tmp);}for(int i=0 ; i <N ; i++){for(int j=0 ; j<date.size() ; j++){if(date[j].size() > 0){cout<<date[j].back()<<' ';date[j].pop_back();}}cout<<endl;}}
// 64 位输出请用 printf("%lld")

这篇关于算法学习——华为机考题库5(HJ31 - HJ35)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676290

相关文章

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各