【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.pswp.cn/pingmian/73761.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73761.shtml
英文地址,請注明出處:http://en.pswp.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 - 列出文件和目錄 # 查看當前目錄下的所有文件和子目錄&…