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

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10(HJ64 - HJ69)

HJ64 MP3光标位置

描述

MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。

现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下:

歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。

光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。
在这里插入图片描述
在这里插入图片描述

输入说明:
1 输入歌曲数量
2 输入命令 U或者D

输出说明
1 输出当前列表
2 输出当前选中歌曲

示例

在这里插入图片描述

代码解析

#include <iostream>
using namespace std;int main() {int num;string str;cin>>num;cin>>str;int cur = 0;int left = 0,right;if(num >3) right = 3;else right = num-1;for(auto it:str){//  cout<<cur<<" "<<left<<' '<<right<<endl;if(it == 'U') {cur--;cur = cur%num;if(cur < 0) cur += num;if(num > 4){if(cur >= left && cur <= right ) {}else if( cur == num-1 ) { left = num - 1 - 3; right = num - 1; }else { left-- ; right--; }}}else if(it == 'D'){cur++;cur = cur%num;if(cur < 0) cur += num;if(num > 4){if(cur >= left && cur <= right ) {}else if( cur == 0 ) { left = 0; right =  3; }else { left++ ; right++; }}} }for(int i=left ; i<=right ; i++){cout<<i+1<<' ';}cout<<endl;cout<<cur+1;}
// 64 位输出请用 printf("%lld")

HJ65 查找两个字符串a,b中的最长公共子串

描述

查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!

数据范围:字符串长度 1≤length≤300
进阶:时间复杂度:O(n 3) ,空间复杂度:O(n)
输入描述:
输入两个字符串

输出描述:
返回重复出现的字符

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <string>
#include <vector>
using namespace std;int main() {string str1,str2;cin>>str1>>str2;if(str1.size() > str2.size()){string tmp = str1;str1 = str2;str2 = tmp;}int m = str1.size() , n = str2.size();vector<vector<int>> dp(m+1,vector<int>(n+1,0));int indnx , lenght = 0;for(int i=1 ; i<=m ;i++){for(int j=1 ; j<=n ;j++){if(str1[i-1] == str2[j-1]) dp[i][j] = dp[i-1][j-1] + 1;if(dp[i][j] > lenght){lenght = dp[i][j];indnx = i;}}}// for(int i=0 ; i<=m ;i++)// {//     for(int j=0 ; j<=n ;j++)//     {//         cout<<dp[i][j]<<' ';//     }//     cout<<endl;// }string result(str1.begin()+indnx-lenght , str1.begin() + indnx);cout<<result;}
// 64 位输出请用 printf("%lld")

HJ66 配置文件恢复

描述

有6条配置命令,它们执行的结果分别是:
在这里插入图片描述
注意:he he不是命令。

为了简化输入,方便用户,以“最短唯一匹配原则”匹配(注:需从首字母开始进行匹配):

1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;
2、若只输入一字串,但匹配命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne,但是该命令有两个关键词,所有匹配失败,执行结果为:unknown command

3、若输入两字串,则先匹配第一关键字,如果有匹配,继续匹配第二关键字,如果仍不唯一,匹配失败。
例如输入:r b,找到匹配命令reset board 和 reboot backplane,执行结果为:unknown command。
例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。
4、若输入两字串,则先匹配第一关键字,如果有匹配,继续匹配第二关键字,如果唯一,匹配成功。例如输入:bo a,确定是命令board add,匹配成功。
5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:b addr,无法匹配到相应的命令,所以执行结果为:unknow command。
6、若匹配失败,打印“unknown command”

注意:有多组输入。
数据范围:数据组数:1≤t≤800 ,字符串长度1≤s≤20
进阶:时间复杂度:O(n) ,空间复杂度:O(n)
输入描述:
多行字符串,每行字符串一条命令

输出描述:
执行结果,每条命令输出一行

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;vector<pair<string, string>> instr = { {"reset",""},{"reset","board"},{"board","add"},{"board","delete"},{"reboot","backplane"},{"backplane","abort"}};    //存放每一对关键字vector<string> outstr = {    "reset what","board fault","where to add","no board at all","impossible","install first"};    //存放每条命令对应执行结果int main() {string str;while ( getline(cin,str) ) { // 注意 while 处理多个 casestringstream ss(str);string key;vector<string> date;while( getline(ss, key, ' ') ){date.push_back(key);}int count = 0;string result;for(int i=0 ; i<instr.size() ; i++){int i1 = instr[i].first.find(date[0]);int i2;if(date.size() == 2 ){i2 = instr[i].second.find(date[1]);}else if( date.size() == 1 && instr[i].second.empty() == 1){i2 = 0;}else i2 = -1;if( i1 == 0 && i2 == 0 ){count++;result = outstr[ i ];}}if(count == 1) cout<<result<<endl;else cout<<"unknown command"<<endl;str.clear();date.clear();}
}
// 64 位输出请用 printf("%lld")

HJ67 24点游戏算法

描述

给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算
此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。
输入描述:
读入4个[1,10]的整数,数字允许重复,测试用例保证无异常数字。

输出描述:
对于每组案例,输出一行表示能否得到24点,能输出true,不能输出false

示例

在这里插入图片描述

代码示例

#include <iostream>
#include <vector>using namespace std;bool flag = false;
void track(vector<double> &date ,vector<bool> &path , int indnx , double result)
{if( indnx > 4 || flag == true ) return;//cout<<indnx<<' '<<result<<endl;if(  result == 24 ){flag = true;return;}for(int i=0 ; i<date.size() ;i++){if(path[i] == false){path[i] = true;track(date, path, indnx + 1 , result + date[i]);track(date, path, indnx + 1 , result - date[i]);track(date, path, indnx + 1 , result * date[i]);track(date, path, indnx + 1 , result / date[i]);path[i] = false;}}}int main() {int tmp;vector<double> date;while (cin >> tmp) { // 注意 while 处理多个 casedate.push_back(tmp);}vector<bool> path(date.size(),false);track(date,path,0,0);if(flag == true) cout<<"true"<<endl;else cout<<"false"<<endl;}
// 64 位输出请用 printf("%lld")

HJ68 成绩排序

描述

给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩

都按先录入排列在前的规则处理。

例示:
jack 70
peter 96
Tom 70
smith 67

从高到低 成绩
peter 96
jack 70
Tom 70
smith 67

从低到高

smith 67

jack 70

Tom 70
peter 96

注:0代表从高到低,1代表从低到高

**数据范围:**人数:1≤n≤200
进阶:时间复杂度:O(nlogn) ,空间复杂度:O(n)
输入描述:
第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开

输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <utility>
#include <vector>
#include <string>
#include <algorithm>using namespace std;static bool cmp1( pair<string,int> a, pair<string,int>  b )
{return a.second > b.second;
}static bool cmp2( pair<string,int> a, pair<string,int>  b )
{return a.second < b.second;
}int main() {int n;int flag;vector<pair<string,int>> date;cin>>n;cin>>flag;string name;int num;while (n--) { // 注意 while 处理多个 casecin>>name>>num;pair<string, int> tmp;tmp.first = name;tmp.second = num;date.push_back( tmp );}if(flag == 0) stable_sort(date.begin(), date.end() , cmp1);else stable_sort(date.begin(), date.end() , cmp2);for(int i=0 ; i<date.size() ;i++)cout<<date[i].first<<' '<<date[i].second<<endl;return 0;
}
// 64 位输出请用 printf("%lld")

HJ69 矩阵乘法

描述

如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的
在这里插入图片描述
矩阵的大小不超过100*100
输入描述:
第一行包含一个正整数x,代表第一个矩阵的行数
第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数
第三行包含一个正整数z,代表第二个矩阵的列数
之后x行,每行y个整数,代表第一个矩阵的值
之后y行,每行z个整数,代表第二个矩阵的值

输出描述:
对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果

示例

在这里插入图片描述

代码解析

#include <iostream>
#include <vector>using namespace std;int main() {int x1,x2,y1,y2;cin>>x1>>x2>>y2;y1 = x2;vector<vector<int>> date1(x1,vector<int>(y1,0));vector<vector<int>> date2(x2,vector<int>(y2,0));vector<vector<int>> result(x1,vector<int>(y2,0));int tmp;for(int i=0 ; i < x1 ; i++){for(int j=0 ; j < y1 ; j++){cin>>tmp;date1[i][j] = tmp;}}for(int i=0 ; i < x2 ; i++){for(int j=0 ; j < y2 ; j++){cin>>tmp;date2[i][j] = tmp;}}for(int i=0 ; i < x1 ; i++){for(int j=0 ; j < y2 ; j++){tmp = 0;for(int k=0 ; k< y1 ; k++){result[i][j] += (date1[i][k] * date2[k][j]);}cout<<result[i][j]<<' ';}cout<<endl;}}
// 64 位输出请用 printf("%lld")

相关文章:

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10&#xff08;HJ64 - HJ69&#xff09; HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小&#xff0c;显示歌曲列表的时候每屏只能显示几首歌曲&#xff0c;用户要通过上下键才能浏览所有的歌曲。为了简化处理&#xff0c;假设每屏只能显示4首歌曲&a…...

[office] Excel中去除表格小数点后面数字的操作方法 #知识分享#学习方法

Excel中去除表格小数点后面数字的操作方法 如何去除EXCEL表格中小数点后面的数字&#xff0c;双击表格时只留有整数&#xff0c;今天&#xff0c;小编就教大家在Excel中去除表格小数点后面数字的操作方法。 Excel中去除表格小数点后面数字的操作步骤如下&#xff1a; 如图&…...

2023年度报告

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游&#xff01; 思来想去&#xff0c;虽然迟到一月&#xff0c;还是觉得要写上一篇年度总结报告回忆过去的一年&#xff08;准确来说是半年&#xff0c;毕竟前年的年终总结报告是在去年的5月末写的&#xff09;&#xff0c; …...

基于springboot智慧养老平台源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…...

IDEA插件ChatGPT - Easycode安装使用

IDEA插件ChatGPT - Easycode简介 ChatGPT - Easycode 是一个由 OpenAI 开发的 IntelliJ IDEA 插件&#xff0c;它可以利用 ChatGPT 的强大语言生成能力&#xff0c;帮助开发人员提高编码效率。 主要功能&#xff1a; 代码生成&#xff1a;可以根据自然语言描述生成代码&…...

设置 相关

记录使用过程中做的设置相关事宜。方便后续查询 vscode如何自动生成html格式&#xff1a; vscode快速生成html模板 --两种方法&#xff0c;亲测有用_vscode自动生成html模板-CSDN博客 使用第二个方式。存储html格式后缀。输入&#xff01;&#xff0c;vscode自动补全。 安装…...

argcomplete,一个超酷 Python 库!

前言 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - argcomplete。 Github地址&#xff1a;https://github.com/kislyuk/argcomplete 命令行工具是开发者和系统管理员的得力助手&#xff0c;但随着命令行选项的增多&#xff0c;用户可能会感到困惑。Python 中的 a…...

<设计模式>单例模式懒汉和饿汉

目录 一、单例模式概述 二、懒汉模式和饿汉模式 1.饿汉模式 1.1代码实现 1.2实现细节 1.3模式优劣 2.懒汉模式 2.1代码实现 2.2实现细节 2.3模式优劣 三、多线程下的线程安全问题 1.懒汉和饿汉线程安全问题分析 1.1安全的饿汉模式 1.2不安全的懒汉模式 2.懒汉线程…...

二分查找------蓝桥杯

题目描述&#xff1a; 请实现无重复数字的升序数组的二分查找 给定一个元素升序的、无重复数字的整型数组 nums 和一个目标值 target&#xff0c;写一个函数搜索 nums 中的target&#xff0c;如果目标值存在返回下标 (下标从0 开始)&#xff0c;否则返回-1 数据范围: 0 < l…...

今日arXiv最热NLP大模型论文:微软提出SliceGPT,删除25%模型参数,性能几乎无损

引言&#xff1a;探索大型语言模型的高效压缩方法 随着大型语言模型&#xff08;LLMs&#xff09;在自然语言处理领域的广泛应用&#xff0c;它们对计算和内存资源的巨大需求成为了一个不容忽视的问题。为了缓解这些资源限制&#xff0c;研究者们提出了多种模型压缩方法&#…...

ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI

文章目录 ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI一、ChatGPT(OpenAI)的新版API调用1.1 环境变量配置与调用1.2 新版api调用1.3 命令行流式输出二、Gradio制作自己的聊天WebUI2.1 流式WebUI2.2 样式调整三、总结参考ChatGPT实战100例 - (13) 写一个属于自…...

【计算机学院寒假社会实践】——服务走进社区,共绘幸福蓝图

为深入贯彻落实志愿者服务精神&#xff0c;扎实推进志愿者服务质量&#xff0c;2024年1月28日&#xff0c;曲阜师范大学计算机学院“青年扎根基层&#xff0c;服务走进社区”社会实践队队员周兴睿在孙宇老师的指导下&#xff0c;来到山东省滨州市陈集街道社区开展了为期一天的“…...

[python] 过年燃放烟花

目录 新年祝福语 一、作品展示 二、作品所用资源 三、代码与资源说明 四、代码库 五、完整代码 六、总结 新年祝福语 岁月总是悄然流转&#xff0c;让人感叹时间的飞逝&#xff0c;转眼间又快到了中国传统的新年&#xff08;龙年&#xff09;。 回首过去&#xf…...

数据结构与算法:图论(邻接表板子+BFS宽搜、DFS深搜+拓扑排序板子+最小生成树MST的Prim算法、Kruskal算法、Dijkstra算法)

前言 图的难点主要在于图的表达形式非常多&#xff0c;即数据结构实现的形式很多。算法本身不是很难理解。所以建议精通一种数据结构后遇到相关题写个转换数据结构的接口&#xff0c;再套自己的板子。 邻接表板子&#xff08;图的定义和生成&#xff09; public class Graph…...

Python之PySpark简单应用

文章目录 一、介绍1.准备工作2. 创建SparkSession对象&#xff1a;3. 读取数据&#xff1a;4. 数据处理与分析&#xff1a;5. 停止SparkSession&#xff1a; 二、示例1.读取解析csv数据2.解析计算序列数据map\flatmap 三、问题总结1.代码问题2.配置问题 一、介绍 PySpark是Apa…...

降维(Dimensionality Reduction)

一、动机一&#xff1a;数据压缩 这节我将开始谈论第二种类型的无监督学习问题&#xff0c;称为降维。有几个原因使我们可能想要做降维&#xff0c;其一是数据压缩&#xff0c;它不仅允许我们压缩数据使用较少的计算机内存或磁盘空间&#xff0c;而且它可以加快我们的学习算法。…...

web应用(网页)怎样调用浏览器插件(如metamask小狐狸钱包)

下边是与gpt的对话&#xff0c;代码可以在浏览器控制台验证 一&#xff0c;在网页上点击一个连接按钮 然后小狐狸钱包就打开了&#xff0c;是怎么实现的呢 当你在网页上点击一个连接按钮&#xff0c;然后自动打开MetaMask&#xff08;通常被称为“小狐狸钱包”&#xff0c;一种…...

2024美赛数学建模C题完整论文教学(含十几个处理后数据表格及python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了数学建模美赛本次C题目Momentum in Tennis完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C论文共49页&…...

Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】

文章目录 Matplotlib绘制炫酷柱状图的艺术与技巧1. 簇状柱状图2. 堆积柱状图3. 横向柱状图4. 百分比柱状图5. 3D柱状图6. 堆积横向柱状图7. 多系列百分比柱状图8. 3D堆积柱状图9. 带有误差线的柱状图10. 分组百分比柱状图11. 水平堆积柱状图12. 多面板柱状图13. 自定义颜色和样…...

window 挂载linux 网盘

背景:因为很多情况下,作为开发人员,我们都希望用Linux的编译环境,但是可以用windows下各种IDE来写code; linux 服务器安装NFS服务 说明:NFS 服务就是让不同的计算机可以在不同的操作系统之间共享文件,采用的就是服务端/客户端的架构,在NFS服务器上将目录设置为输出目录(…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...

C# WPF 左右布局实现学习笔记(1)

开发流程视频&#xff1a; https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码&#xff1a; GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用&#xff08;.NET Framework) 2.…...