【C++】 —— 笔试刷题day_8

一、求最小公倍数

题目解析

在这里插入图片描述

题目很简单,给定两个数ab求它们的最小公倍数。

算法思路

对于求两个数的最小公倍数问题,想必已经非常熟悉了;

在之前学校上课时,记得老师提起过,最小公倍数 = 两个数的乘积 除以最大公约数

所以我们现在只需要找到两个数的最大公约数,然后就可以求出最小公倍数。

ab的最大公约数

  • 定义tmp = a%b这里a > b
  • 循环去执行取%操作,每次把b的值赋给atmp的值赋给btmp继续取a%b
  • tmp的值为0是循环就结束了,此时b的值就是这两个数的最大公约数。

返回结果

求出来了最大公约数,最后返回a*b / 最大公约数即可。

代码实现

#include <iostream>
using namespace std;
//求最大公约数
int gcd(int a, int b) {if (a < b) {int t = a;a = b;b = t;}int tmp = a % b;while (tmp) {a = b;b = tmp;tmp = a % b;}return b;
}
int main() {int a, b;cin >> a >> b;int g = gcd(a, b);cout << a* b / g << endl;return 0;
}

二、数组中最长的连续子序列

题目解析

在这里插入图片描述

本题,题目给定一个无序的数组arr,让我们返回其中最长连续序列的长度(要求数值连续,位置可以不连续)就例如3,5,6,4,只要数值是连续的自然数就可以。

算法思路

对于这道题,暴力解法,枚举出来所以的子序列,找出最长的连续序列,求出来长度即可。

这里不多描述了,回超时。

现在我们在回过去看题目,要求我们找连续序列的长度,(该序列数值是连续的,对位置没有要求),只要求我们返回长度;

所以我们现在可以先让整个数组有序,让这些连续的数放到一块,这样就方便我们计算长度了。

整体思路如下:

先让数组有序,再利用双指针去寻找连续序列,使用count来记录序列的长度即可

  • 排序数组:调用库里面sort即可
  • 双指针遍历:i记录连续数组开始位置的下标,j向后遍历;如果j位置数值等于j-1位置数值+1,就count++,继续向后遍历;如果j位置数值等于j-1位置数值,j继续向后遍历;如果j位置数值不等于等于j-1位置数值+1也不等于j-1位置的值,就更新当前结果。
  • 更新完结果后,i变道j位置,j从下一个位置继续遍历,直到遍历完整个数组。

这里需要注意:可以存在相等的值,我们count计数的同时也要完成去重操作

代码实现

class Solution {public:int MLS(vector<int>& arr) {//排序数组sort(arr.begin(), arr.end());int n = arr.size();int ret = 0;for (int i = 0; i < n;) {int j = i + 1;int count = 1;while (j < n) {if (arr[j] - arr[j - 1] == 1) {j++;count++;} else if (arr[j] - arr[j - 1] == 0) {j++;} else {break;}}if (count > ret)ret = count;i = j;}return ret;}
};

三、字母收集

题目解析

在这里插入图片描述

题目给了一个n*m的字符数组(方阵),让我们选择一条路径,获取最多的分数(得分规则:遇到l字母得4分、遇到o字母得3分、遇到v字母得2分、遇到e字母得1分,其他的字母都不得分);

在我们选择路径的时候,我们只能从当前节点向右或者向下走。(整个很重要),所以我们就要从1,1位置开始。

算法思路

初次遇见这道题,博主以为是搜索题,就直接使用bfs深度遍历完整个数组,找到当前位置向左和向右走能够获得的分数,然后取其中最大值。

但是,题目中给定范围1<=n,m<=500,深层递归就要执行2^500次,可以说十分恐怖了。

这里直接来看这道题的解题思路:

dp动态规划。

这里我们dp[i][j]就表示走到该位置最大的得分

dp状态转移方程:dp[i][j] = max(dp[i][j-1],dp[i-1][j])+t,其中t表示dp[i][j]位置的得分。

这里为什么呢?

题目上说了,我们只能向下和向右走,所以我们只能从dp[i][j-1]dp[i-1][j]两个位置走到dp[i][j];而我们的dp[i][j]表示的就是到当前位置的最大得分,所以,我们就找**dp[i][j-1]dp[i-1][j]两个位置那个位置的值(也就是到哪个位置的最大得分)两个值中最大的子再加上当前位置得分即可。**

代码实现

这里写代码有几个注意的点:

  • 第一个就是我们使用dp时,通常下标从1开始(这里,我们填写dp[1][1]时要用到d[1][0]dp[0][1],下标从1开始就不需要先自己填入数据了;因为未初始化未知的值都是0不会影响我们的结果
  • 第二个就是这里的填表顺序:我们填dp[i][j]时,需要用到dp[i][j-1]dp[i-1][j]两个位置的值,所以要从左到右,从上到下依次填写。
#include <iostream>
using namespace std;
const int N = 501;
int dp[N][N] = {0};
char str[N][N];
int main() {int m,n;cin>>m>>n;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>str[i][j];}}//初始化dpfor(int i=1;i<=m;i++){for(int j=1;j<=n;j++){int t = 0;if(str[i][j]=='l')  t = 4;else if(str[i][j] =='o') t = 3;else if(str[i][j] == 'v') t = 2;else if(str[i][j] == 'e') t = 1;dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + t;}}cout<<dp[m][n]<<endl;return 0;
}

** 到这里本篇文章就结束了,继续加油!**

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

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

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

相关文章

MTK Android12-Android13 设置系统默认语言

Android 系统&#xff0c;默认语言 文章目录 需求&#xff1a;场景 参考资料实现方案实现思路编译脚本熟悉-平台熟悉mssi_64_cnkernel-4.19 解决方案修改文件-实现方案 源码分析PRODUCT_LOCALES 引用PRODUCT_DEFAULT_LOCALE 定义get-default-product-locale 方法定义PRODUCT_DE…

系统如何查找文件?inode号又是什么?

下面分别详细解释您提到的三个问题&#xff1a; “文件系统怎么定位文件”、“inode 是什么”、“为什么删除后还可能被占用”。 一、文件系统怎么定位文件 1.1 目录与文件名并不直接存储文件数据 在常见的 Unix/Linux 文件系统&#xff08;如 ext4、xfs&#xff09;或类似的…

05-SpringBoot3入门-整合SpringMVC(配置静态资源、拦截器)

1、说明 在01-SpringBoot3入门-第一个项目-CSDN博客中&#xff0c;其实就已经整合了SpringMVC。下面讲解怎么配置静态资源和拦截器 2、配置静态资源 命名&#xff1a;static&#xff08;文件夹&#xff09; 位置&#xff1a;src/main/resources 编写一个html文件 访问 http:/…

Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测

聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测 目录 聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 聚划算&#xff01;Tran…

树莓派浏览器配置全解析:从轻量系统到网页应用平台

树莓派&#xff08;Raspberry Pi&#xff09;不仅是嵌入式开发的入门利器&#xff0c;也因其低成本和强大的社区支持而成为物联网、数字标牌、教育培训等领域的热门平台。在很多应用中&#xff0c;运行一个浏览器并作为 Web 前端展示、操作或交互的能力显得尤为关键。 但在资源…

初识Qt(一)

本文部分ppt、视频截图原链接&#xff1a;萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频 1. Qt是什么&#xff1f; Qt是一个跨平台的C应用程序开发框架&#xff0c;它既为图形用户界面(GUI)程序开发提供了强大支持&#xff0c;也能用于开发非GUI的控制台程序、服务端…

六十天前端强化训练之第三十二天之Babel 转译配置大师级深度讲解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、核心概念与知识体系详解 1. Babel 工作原理全景解析 二、完整配置方案&#xff08;带详细注释&#xff09; 1. 进阶版 .babelrc 配置 2. Webpack 集成配置&#xff08…

智能提示词生成器:助力测试工程师快速设计高质量测试用例

在软件测试中,测试用例设计方法的选择和实施是确保软件质量的重要步骤。测试工程师经常需要根据不同的测试场景、参数维度和业务需求,设计出覆盖率高且有效的测试用例。然而,设计测试用例并非易事,特别是在面对复杂的业务逻辑时。 为了帮助测试工程师高效生成测试用例提示…

beanie.exceptions.CollectionWasNotInitialized

遇到这样的情况不要慌&#xff0c;不要慌 1&#xff1a;检查模型是否已经初始化&#xff1a; class TaskModel(Document):"""定时任务模型"""task_id: str Field(default_factorylambda: str(uuid.uuid4()), # 新增默认值description"任…

【CVE-2025-30208】| Vite-漏洞分析与复现

漏洞简介 CVE-2025-30208 是 Vite 开发服务器中的一个任意文件读取漏洞。该漏洞允许攻击者通过特定的 URL 参数绕过访问控制&#xff0c;从而读取服务器上的敏感文件&#xff08;如 /etc/passwd 或 C:\windows\win.ini&#xff09;。 该漏洞主要影响以下版本的 Vite&#xff…

将 Markdown 表格结构转换为Excel 文件

在数据管理和文档编写过程中&#xff0c;我们经常使用 Markdown 来记录表格数据。然而&#xff0c;Markdown 格式的表格在实际应用中不如 Excel 方便&#xff0c;特别是需要进一步处理数据时。因此&#xff0c;我们开发了一个使用 wxPython 的 GUI 工具&#xff0c;将 Markdown…

Golang使用 ip2region 查询IP的地区信息

利用 ip2region 进行 IP 地址定位 import ("fmt""log""github.com/lionsoul2014/ip2region/binding/golang/xdb" )func main() {ip : "213.118.179.98"dbPath : ".\\cmd\\ip\\ip2region.xdb"// 1、初始化查询器//searcher,…

对匿名认证的理解

概述&#xff1a;在 Spring Security 中&#xff0c;** 匿名认证&#xff08;Anonymous Authentication&#xff09;** 是一种特殊的认证机制&#xff0c;用于处理未提供有效凭证的请求。 匿名认证的本质 目的&#xff1a;允许未认证用户访问特定资源。原理&#xff1a; 当请求…

C++调用Python

Python安装 地址&#xff1a; python官网 可以根据需要下载对应的版本。 调用python python测试脚本 # my_script.py import sys import jsondef calculate(a, b):return a * b 10 # 示例计算逻辑if __name__ "__main__":# 从命令行参数读取 JSON 字符串try…

工程数字建造管理系统平台有哪些?好的数字建造管理系统推荐

一、什么是工程数字建造管理系统平台&#xff1f; 工程数字建造管理系统平台是一种集成了先进信息技术&#xff08;如云计算、大数据、物联网等&#xff09;的综合性管理工具&#xff0c;它旨在通过数字化手段提升工程建造全过程的管理效率和决策水平。这一平台不仅覆盖了工程…

Android开发EmojiCompat 初始化

Android开发EmojiCompat 初始化 报错信息&#xff1a; ensure spannable:java.lang.IllegalStateException: EmojiCompat is not initialized 在Application上写上下面代码即可&#xff1a; EmojiCompat.Config config new BundledEmojiCompatConfig(this);EmojiCompat.in…

【Go】数组

数组Array 重点&#xff1a; 数组是值类型 注意点: 1. 数组&#xff1a;是同一种数据类型的固定长度的序列。2. 数组定义&#xff1a;var a [len]int&#xff0c;比如&#xff1a;var a [5]int&#xff0c;数组长度必须是常量&#xff0c;且是类型的组成部分。一旦定义&…

CORDIC算法:三角函数的硬件加速革命——从数学原理到FPGA实现的超高效计算方案

计算机该如何求解三角函数&#xff1f;或许你的第一印象是采用泰勒展开&#xff0c;或者采用多项式进行逼近。对于前者&#xff0c;来回的迭代计算开销成本很大&#xff1b;对于后者&#xff0c;多项式式逼近在较窄的范围內比较接近&#xff0c;超过一定范围后&#xff0c;就变…

【剪辑_BGM 整合】

【优质BGM➽以剪映为基础】 自定义 一、舒缓惬意 二、轻快 1&#xff0c;快乐骑行 2&#xff0c;医疗科普 3&#xff0c;宣传片励志摇滚热血 Going back to Business 4&#xff0c;电子宠物&#xff08;memories&#xff09; 5&#xff0c;诗与远方&#xff08;热播&…

linux 常见命令使用介绍

Linux 常见命令使用介绍 Linux 是一个功能强大的操作系统&#xff0c;其核心是命令行工具。掌握一些常用的 Linux 命令可以极大地提高工作效率。本文将详细介绍一些常见的 Linux 命令及其用法。 1. 文件与目录操作 ls - 列出文件和目录 # 查看当前目录下的所有文件和子目录&…