【刷题汇总 -- 求最小公倍数、数组中的最长连续子序列、字母收集】

C++日常刷题积累

  • 今日刷题汇总 - day008
    • 1、求最小公倍数
      • 1.1、题目
      • 1.2、思路
      • 1.3、程序实现 -- 穷举法
      • 1.2、程序实现 -- 辗转相除法
    • 2、数组中的最长连续子序列
      • 2.1、题目
      • 2.2、思路
      • 2.3、程序实现
    • 3、字母收集
      • 3.1、题目
      • 3.2、思路
      • 3.3、程序实现
    • 4、题目链接

今日刷题汇总 - day008

1、求最小公倍数

1.1、题目

在这里插入图片描述

1.2、思路

读完题知道,需要完成求两个正整数的最小公倍数。那么A和B的最⼩公倍数的公式 = A*B/两者的最⼤公约数。而最⼤公约数:可以使用辗转相除法、穷举法、更相减损法和质因数分解法等。这里就使用最常用的穷举法和辗转相除法即可。接下来,就是程序实现。

1.3、程序实现 – 穷举法

穷举法就是如果大数可以整除小数,那么最大公约数为小数。如果不能整除小数,那么这两个数就按大到小依次对比小数小的数求余,遇到都能够整除的,就是最大公约数。

#include <iostream>
using namespace std;int main()
{int a, b;cin >> a >> b;int min = a>b ? a : b;int ret = 0;for(int i = 1;i <= min;i++){if(a%i == 0 && b%i == 0)ret = i;}cout << a*b/ret << endl;return 0;
}

在这里插入图片描述

在这里插入图片描述

1.2、程序实现 – 辗转相除法

辗转相除法就是用a对b求余,若余数为0,则除数b为最大公约数。若余数不为0,将此余数r作为新的除数,b作为新的被除数,重新求余,直到余数为0为止。此时的最大公约数为除数。

#include <iostream>
using namespace std;int gcd(int a,int b)
{if(b == 0)return a;return gcd(b,a%b);
}int main() {int a, b;cin >> a >> b;cout << a*b/gcd(a,b) << endl;return 0;
}

在这里插入图片描述

在这里插入图片描述

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

2.1、题目

在这里插入图片描述

2.2、思路

读完题,明白,让我们求无序数组中的连续序列的最大长度,并且连续可与位置无关。刚读完题就联想到感觉跟之前的字符串中找出连续最长的数字串思路类似的计数而已。那么这里先进行可以采用sort数组的排序,然后利用变量countlen记录更新长度,利用maxcount保留最大长度并最后返回,然后遍历数组,当相邻的元素是连续的就更新countlen长度,如果相邻的数值相同则越过继续判断下一位元素即可,最后遍历结束返回最大值maxcount,其中涉及一些细节处理,接下来,就是程序实现。

2.3、程序实现

首先,按照思路sort排序数组和定义好变量,然后写好遍历框架,然后只要响铃元素是连续或者相等的元素,则继续j++遍历,否则break即可,直到len结束while,进入下次循环前需要更新j = i+1重新从新的连续位置遍历,countlen = 1来重新计入countlen 大小其中注意无需i++,可以直接越过countlen。所以也可以得出,不需要每次都i++,可以直接越过countlen,避免重复判断比较操作。最后,得到的maxcount就是最大长度。

class Solution {
public:int MLS(vector<int>& arr){sort(arr.begin(),arr.end());int len = arr.size();int j = 0;int countlen = 1;int maxcount = 0;for(int i = 0;i < len; i+=countlen){j = i + 1;countlen = 1;while(j < len){if(arr[j] - arr[j-1] == 1){countlen++;j++;}else if(arr[j] - arr[j-1] == 0){j++;}else{break;}}maxcount = max(maxcount , countlen);}return maxcount;}
};

在这里插入图片描述

在这里插入图片描述

3、字母收集

3.1、题目

在这里插入图片描述

3.2、思路

读完题,知道让实现在n*m矩阵中,拼接或者搜索或者贪心收集,按照一定的规则走最优的路径使得获得的分数最多。那么这里使用推导dp动态规划思路,只要使用dp就得确定dp[i]动态表示和动态转移方程。由题目规则很容易想到:
dp[i][j]表示:到第i行j列的最大分数和;
那么推导状态转移方程就是:dp[i][j] = 由左边dp[i][j-1]或上方dp[i-1][j],再加上其分数得到;
即: dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + score;值得注意的是,此题是从下标1开始的。那么接下来,就是程序实现。

3.3、程序实现

首先,按照题目要求和思路定义字符二维数组和dp数组,接着输入n*m二维数组,下标从1开始的。然后,定义score分数变量,接着遍历二维数组,判断并匹配字符是否为加分字符,累加到dp[i][j]中,最后输出dp[n][m]即可。

#include <iostream>
using namespace std;const int N = 501;
char ch[N][N];
int dp[N][N];int main() {int n,m;cin >> n >> m;for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){cin >> ch[i][j];}}int score = 0;for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){if(ch[i][j] == 'l')score = 4;else if(ch[i][j] == 'o')score = 3;else if(ch[i][j] == 'v')score = 2;else if(ch[i][j] == 'e')score = 1;elsescore = 0;dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + score;}}cout << dp[n][m] << endl;return 0;
}

在这里插入图片描述

在这里插入图片描述

4、题目链接

求最小公倍数
数组中的最长连续子序列
字母收集

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

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

相关文章

Windows C++ vs2022环境中下载、安装和使用osmesa

第一步&#xff1a;安装 MinGW-w64 请参考这篇文章进行安装&#xff1a; 在Windows中安装MinGW-w64最新版本 第二步&#xff1a;安装DirectX SDK 请参考这篇文章进行安装&#xff1a; 下载安装Microsoft DirectX SDK(June 2010) 第三步&#xff1a;安装Windows SDK 请参考这篇…

oracle索引字段存储数据过长,导致索引失效

1&#xff1a;短位数据&#xff0c;索引生效 2&#xff1a;长位索引&#xff0c;索引不生效 此问题发现于6月中旬&#xff0c;线上问题优化。引以为戒。 解决&#xff1a; 并未解决索引不生效问题&#xff0c; 但是基于优化查询&#xff0c;是的查询保持毫秒级

第一个基于FISCOBCOS的前后端项目(发行转账)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分&#xff0c;1是区块链平台webase搭建&#xff08;此项目使用节点前置webase-front即可&#xff09;&#xff0c;2是…

语义分割和实例分割区别?

语义分割&#xff1a;将图像中的每个像素分配给其对应的语义类别&#xff0c;其主要针对于像素&#xff0c;或者说它是像素级别的图像分割方法。&#xff1a;语义分割的目的是为了从像素级别理解图像的内容&#xff0c;并为图像中的每个像素分配一个对象类。 实例分割&#xf…

DMA方式的知识点笔记

苏泽 “弃工从研”的路上很孤独&#xff0c;于是我记下了些许笔记相伴&#xff0c;希望能够帮助到大家 目录 1. DMA基本概念 2. DMA传送过程 易错点 DMA控制器操作流程 3. DMA传送方式 这是单总线的结果 &#xff08;CPU说了算 所以不会产生于CPU的冲突&#xff09; 这…

新浪API系列:支付API打造无缝支付体验,畅享便利生活(3)

在当今数字化时代&#xff0c;支付功能已经成为各类应用和平台的必备要素之一。作为开发者&#xff0c;要构建出安全、便捷的支付解决方案&#xff0c;新浪支付API是你不可或缺的利器。新浪支付API提供了全面而强大的接口和功能&#xff0c;帮助开发者轻松实现在线支付的集成和…

软件开发面试题(C#语言,.NET框架)

1. 解释什么是委托&#xff08;Delegate&#xff09;&#xff0c;并举例说明它在C#中的用法。 委托是一种引用类型&#xff0c;它可以用于封装一个或多个方法。委托对象可以像方法一样调用&#xff0c;甚至可以用于创建事件处理程序。委托是C#中实现事件和回调函数的重要机制。…

【PyTorch][chapter 26][李宏毅深度学习][attention-1]

前言&#xff1a; attention 在自然语言处理&#xff0c;声音处理里面是一个很重要的技巧. attention 要解决的是输入的向量长度不定. 根据输入输出的不同,分为三种场景&#xff1a; 输入N个向量&#xff0c;输出N个向量,这是本章的重点 输入N个向量&#xff0c;输出向量不定 输…

施罗德数列SQL实现

在组合数学中,施罗德数用来描述从(0,0)到(n,n)的格路中,只能使用(1,0)、(0,1)、(1,1)三种移动方式,始终位于对角线下方且不越过对角线的路径数 DECLARE n INT 10 DECLARE i INT DECLARE rst INT DECLARE old INT1CREATE TABLE #rst (i INT ,rst int )INSERT INTO #rst values(…

3-7 使用深度学习解决温度即示数问题

3-7 使用深度学习解决温度即示数问题 直接上代码 %matplotlib inline import matplotlib.pyplot as plt import numpy as np import torch torch.set_printoptions(edgeitems2, linewidth75)设置Jupyter Notebook在单元格中内嵌显示图像&#xff0c;导入所需库并设置PyTorch的…

阿里发布大模型发布图结构长文本处理智能体,超越GPT-4-128k

随着大语言模型的发展&#xff0c;处理长文本的能力成为了一个重要挑战。虽然有许多方法试图解决这个问题&#xff0c;但都存在不同程度的局限性。最近&#xff0c;阿里巴巴的研究团队提出了一个名为GraphReader的新方法&#xff0c;通过将长文本组织成图结构&#xff0c;并利用…

2,区块链、数字货币及其应用场景(react+区块链实战)

2&#xff0c;区块链、数字货币及其应用场景&#xff08;react区块链实战&#xff09; 一、什么是区块链&#xff1f;1 ibloackchain&#xff08;1&#xff09;安装ibloackchain&#xff08;2&#xff09;Blance查询余额&#xff08;3&#xff09;Mine挖矿&#xff08;4&#x…

JavaScript中的拷贝技术探秘:浅拷贝与深拷贝的奥秘

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 前言 JavaScript中的浅拷贝和深拷贝是非常重要的概念&#xff0c;它们在处理对象和数组时具有不同的作用。在编程中&#xff0c;经常需要复制数据以便进行各种操作&#xff0c;但必须注…

小波与傅里叶变换的对比(Python)

直接上代码&#xff0c;理论可以去知乎看。 #Import necessary libraries %matplotlib inline import numpy as np import matplotlib.pyplot as plt import seaborn as snsimport pywt from scipy.ndimage import gaussian_filter1d from scipy.signal import chirp import m…

基于 sftp 的 NAS (局域网文件存储服务器)

局域网 NAS (文件存储服务器) 的基本功能有: 能够存储文件, 同时能够通过多个设备访问 (上传/下载) 文件. 这些功能通过 sftp 可以实现. sftp 是基于 SSH 的文件传输协议, SSH 全程加密传输, 使用 公钥 认证 (不使用密码/口令), 能够提供很高的安全性. 上文说到, 在 LVM 和 bt…

谷粒商城-个人笔记(集群部署篇三)

前言 ​学习视频&#xff1a;​Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强​学习文档&#xff1a; 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…

古建筑倾斜在线监测系统:科技守护历史的创新实践

​ ​​在文化遗产保护的广阔领域中&#xff0c;古建筑的健康监测占据着举足轻重的地位。然而&#xff0c;传统的监测方法往往受限于布线复杂、安装难度大以及对古建筑本体可能造成的伤害等问题。近年来&#xff0c;一种新型的古建筑倾斜在线监测系统应运而生&#xff0c;它…

Halcon 模糊圆边的找圆案例

Halcon 模糊圆边的找圆案例 基本思路 1.将图像转成灰度图像 2.再观察要找到的区域的灰度值变化&#xff0c;找到前景与背景的具体数值。 3.根据找到的前景与背景的具体数值&#xff0c;增强图像对比度。&#xff08;使图像变成黑白图片&#xff09; 4.使用灰度直图工具进行阈值…

用Vue3和Plotly.js绘制交互式3D散点图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建 2D 密度图 应用场景介绍 密度图是一种可视化数据分布的图表&#xff0c;它显示了数据点的密度在不同区域的变化情况。在许多科学和工程领域中&#xff0c;密度图被广泛用于探索和分析数据…

5G(NR) NTN 卫星组网架构

5G(NR) NTN 卫星组网架构 参考 3GPP TR 38.821 5G NTN 技术适用于高轨、低轨等多种星座部署场景&#xff0c;是实现星地网络融合发展的可行技术路线。5G NTN 网络分为用户段、空间段和地面段三部分。其中用户段由各种用户终端组成&#xff0c;包括手持、便携站、嵌入式终端、车…