【華為OD機試真題E卷】521、 機器人可活動的最大網格點數目 | 機試真題+思路參考+代碼解析(E卷復用)(C++)

文章目錄

  • 一、題目
    • 題目描述
    • 輸入輸出
    • 樣例1
  • 一、代碼與思路
    • 🧠C++語言思路
      • ?C++代碼

一、題目

參考鏈接:https://sars2025.blog.csdn.net/article/details/141748083

題目描述

現有一個機器人口,可放置于MxN的網格中任意位置,每個網格包含一個整數編號,當相鄰網格的數字編號差值的絕對值小于等
于1時,機器人可以在網格間移動。
問題:求機器人可活動的最大范圍對應的網格點數目
說明:網格左上角坐標為(0,0),右下角坐標為(m-1,n-1),機器人只能在相鄰網格間上下左右移動

輸入輸出

輸入
第1行輸入為M和N,M示網格的行數N表示網格的列數
之后M行表示網格數值,每行N個數值(數值大小用k示)
數值間用單個空格分隔,行首行尾無多余空格。
M、N、k均為整數,且1≤M,N≤150,0≤k≤50
輸出
輸出1行,包含1個數字,表示最大活動區域的網格點數目,行首行尾無多余空格

樣例1

輸入
4 4
1 2 5 2
2 4 4 5
3 5 7 1
4 6 2 4

輸出
6

一、代碼與思路

🧠C++語言思路

1.首先定義一個深度優先搜索函數dfs,用于計算從指定位置出發的活動區域的網格點數目
2.在dfs函數中,首先獲取網格的行數m和列數n,并初始化活動區域的網格點數目為1。然后標記當前網格為已訪問狀態,
3.定義一個存儲上下左右四個方向偏移量的directions數組。
4.遍歷directions數組中的每個方向,計算新的坐標nx和ny。
5.如果新坐標滿足條件(在網格范圍內、未被訪問、相鄰網格編號差值的絕對值小于等于1),則遞歸調用dfs函數計算新位置的活動區
域的網格點數目,并將其累加到area中。
6.最后返回area作為當前位置的活動區域的網格點數目。
7.定義主函數main,在main函數中首先讀取輸入的網格大小m和n,并創建一個二維vector grid用于存儲網格。
8.通過嵌套循環讀取每個網格的數值,并將其存儲在grid中。
9.調用maxGridArea函數計算最大活動區域的網格點數目,并將結果輸出到標準輸出流中。
10.返回0,表示程序執行完畢。

?C++代碼

#include <iostream>
#include <vector>
using namespace std;int dfs(vector<vector<int>>& grid, int i, int j, vector<vector<bool>>& visited) {int m = grid.size();int n = grid[0].size();int area = 1;  // 活動區域的網格點數目,初始為1visited[i][j] = true;  // 將當前網格標記為已訪問vector<pair<int, int>> directions = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};  // 上下左右四個方向的偏移量// 深度優先搜索for (auto direction : directions) {int dx = direction.first;int dy = direction.second;int nx = i + dx;int ny = j + dy;if (nx >= 0 && nx < m && ny >= 0 && ny < n && !visited[nx][ny] && abs(grid[nx][ny] - grid[i][j]) <= 1) {// 如果相鄰網格滿足條件(編號差值的絕對值小于等于1),則繼續搜索area += dfs(grid, nx, ny, visited);}}return area;
}int maxGridArea(vector<vector<int>>& grid) {int m = grid.size();  // 網格的行數int n = grid[0].size();  // 網格的列數int maxArea = 0;  // 最大活動區域的網格點數目// 創建一個與網格大小相同的二維數組,用于記錄已訪問的網格vector<vector<bool>> visited(m, vector<bool>(n, false));// 遍歷網格的每個位置作為起點for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!visited[i][j]) {int area = dfs(grid, i, j, visited);  // 深度優先搜索計算當前起點的活動區域的網格點數目maxArea = max(maxArea, area);  // 更新最大活動區域的網格點數目}}}return maxArea;
}int main() {int m, n;cin >> m >> n;vector<vector<int>> grid(m, vector<int>(n));for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cin >> grid[i][j];}}int maxArea = maxGridArea(grid);cout << maxArea << endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902767.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902767.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902767.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows端遠程控制ubuntu運行腳本程序并轉發ubuntu端腳本輸出的網頁

背景 對于一些只能在ubuntu上運行的腳本&#xff0c;并且這個腳本會在ubuntu上通過網頁展示運行結果。我們希望可以使用windows遠程操控ubuntu&#xff0c;在windows上查看網頁內容。 方法 start cmd.exe /k "sshpass -p passwd ssh namexxx.xxx.xxx.xxx "cd /hom…

Vue3集成瀏覽器API實時語音識別

效果示例 用法 <!-- 瀏覽器語音識別 --> <BrowserSpeechRecognitionModal v-if"showModal" :isOpen"showModal" close"showModal false" confirm"handleRecognitionResult" />const showModal ref(false); const input…

k8s 手動續訂證書

注意:如果是高可用環境,本文的操作需要在所有控制節點都執行。 查看證書是否過期 kubeadm certs check-expirationkubeadm certs renew可以續訂任何特定證書,或者使用子命令all可以續訂所有證書: kubeadm certs renew all使用 kubeadm 構建的集群通常會將admin.conf證書復…

每日一道leetcode(補充版)

1679. K 和數對的最大數目 - 力扣&#xff08;LeetCode&#xff09; 題目 給你一個整數數組 nums 和一個整數 k 。 每一步操作中&#xff0c;你需要從數組中選出和為 k 的兩個整數&#xff0c;并將它們移出數組。 返回你可以對數組執行的最大操作數。 示例 1&#xff1a; …

基于Keras3.x使用CNN實現簡單的貓狗分類

使用CNN實現簡單的貓狗分類 完整代碼見&#xff1a;基于Keras3.x使用CNN實現簡單的貓狗分類&#xff0c;置信度約為&#xff1a;85% 文章目錄 概述項目整體目錄環境版本注意 環境準備下載miniconda新建虛擬環境基于conda虛擬環境新建Pycharm項目下載分類需要用到的依賴 數據準備…

中介者模式:解耦對象間復雜交互的設計模式

中介者模式&#xff1a;解耦對象間復雜交互的設計模式 一、模式核心&#xff1a;用中介者統一管理對象交互&#xff0c;避免兩兩直接依賴 當系統中多個對象之間存在復雜的網狀交互時&#xff08;如 GUI 界面中按鈕、文本框、下拉框的聯動&#xff09;&#xff0c;對象間直接調…

豆包桌面版 1.47.4 可做瀏覽器,免安裝綠色版

自己動手升級更新辦法&#xff1a; 下載新版本后安裝&#xff0c;把 C:\Users\用戶名\AppData\Local\Doubao\Application 文件夾的文件&#xff0c;拷貝替換 DoubaoPortable\App\Doubao 文件夾的文件&#xff0c;就升級成功了。 再把安裝的豆包徹底卸載就可以。 桌面版比網頁版…

Android PackageManagerService(PMS)框架深度解析

目錄 一、概念與核心作用 二、技術架構與模塊組成 1. 分層架構 1.1 應用層架構細節 1.2 Binder接口層實現 1.3 PMS核心服務層 1.4 底層支持層實現 2. 核心模塊技術要點與工作流程 2.1 PackageParser 2.2 Settings 2.3 PermissionManager 2.4 Installer 2.5 ComponentM…

TensorFlow深度學習實戰(14)——循環神經網絡詳解

TensorFlow深度學習實戰(14)——循環神經網絡詳解 0. 前言1. 基本循環神經網絡單元1.1 循環神經網絡工作原理1.2 時間反向傳播1.3 梯度消失和梯度爆炸問題2. RNN 單元變體2.1 長短期記憶2.2 門控循環單元2.3 Peephole LSTM3. RNN 變體3.1 雙向 RNN3.2 狀態 RNN4. RNN 拓撲結構…

PySide6 GUI 學習筆記——常用類及控件使用方法(常用類矩陣QRectF)

文章目錄 類描述構造方法主要方法1. 基礎屬性2. 邊界操作3. 幾何運算4. 坐標調整5. 轉換方法6. 狀態判斷 類特點總結1. 浮點精度&#xff1a;2. 坐標系統&#xff1a;3. 有效性判斷&#xff1a;4. 幾何運算&#xff1a;5. 類型轉換&#xff1a;6. 特殊處理&#xff1a; 典型應用…

Electron主進程渲染進程間通信的方式

在 Electron 中&#xff0c;主進程和渲染進程之間的通信主要通過 IPC&#xff08;進程間通信&#xff09;機制實現。以下是幾種常見的通信方式&#xff1a; 1. 渲染進程向主進程發送消息&#xff08;單向&#xff09; 渲染進程可以通過 ipcRenderer.send 向主進程發送消息&am…

【C++基礎知識】C++類型特征組合:`disjunction_v` 和 `conjunction_v` 深度解析

這兩個模板是C17引入的類型特征組合工具&#xff0c;用于構建更復雜的類型判斷邏輯。下面我將從技術實現到實際應用進行全面剖析&#xff1a; 一、基本概念與C引入版本 1. std::disjunction_v (邏輯OR) 引入版本&#xff1a;C17功能&#xff1a;對多個類型特征進行邏輯或運算…

私有知識庫 Coco AI 實戰(二):攝入 MongoDB 數據

在之前的文章中&#xff0c;我們介紹過如何使用《 Logstash 遷移 MongoDB 數據到 Easyseach》&#xff0c;既然 Coco AI 后臺數據存儲也使用 Easysearch&#xff0c;我們能否直接把 MongoDB 的數據遷移到 Coco AI 的 Easysearch&#xff0c;使用 Coco AI 對數據進行檢索呢&…

sql server 與navicat測試后,連接qt

先用Navicat測試和sql的連通性&#xff0c;Navicat和sql連通之后&#xff0c;qt也能和sql連通了。 Navicat和Sqlserver Management 能連上&#xff0c;項目無法連接本地 Navicat 連接SQLServer 數據庫 QT國內鏡像網站 Navicat連接SqlServer的問題點 Sql Server的基本配置以及使…

2025年3月電子學會青少年機器人技術(六級)等級考試試卷-理論綜合

青少年機器人技術等級考試理論綜合試卷&#xff08;六級&#xff09; 分數&#xff1a;100 題數&#xff1a;30 一、單選題(共20題&#xff0c;共80分) 1. 2025年初&#xff0c;中國科技初創公司深度求索在大模型領域迅速崛起&#xff0c;其開源的大模型成為全球AI領域的焦…

spark local模式搭建運行示例

Apache Spark 是一個強大的分布式計算框架&#xff0c;但在本地模式下&#xff0c;它也可以作為一個單機程序運行&#xff0c;非常適合開發和測試階段。以下是一個簡單的示例&#xff0c;展示如何在本地模式下搭建和運行 Spark 程序。 一、環境準備 安裝 Java Spark 需要 Java…

【人工智能】解鎖 AI 潛能:DeepSeek 大模型遷移學習與特定領域微調的實踐

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大型語言模型(LLMs)的快速發展,遷移學習與特定領域微調成為提升模型性能的關鍵技術。本文深入探討了 DeepSeek 大模型在遷移學習中的…

視頻智能分析平臺EasyCVR無線監控:全流程安裝指南與功能應用解析

在當今數字化安防時代&#xff0c;無線監控系統的安裝與調試對于保障各類場所的安全至關重要。本文將結合EasyCVR視頻監控的強大功能&#xff0c;為您詳細闡述監控系統安裝過程中的關鍵步驟和注意事項&#xff0c;幫助您打造一個高效、可靠的監控解決方案。 一、調試物資準備與…

【k8s系列7-更新中】kubeadm搭建Kubernetes高可用集群-三主兩從

主機準備 結合前面的章節,這里需要5臺機器,可以先創建一臺虛擬機作為基礎虛擬機。優先把5臺機器的公共部分優先在一臺機器上配置好 1、配置好靜態IP地址 2、主機名宇IP地址解析 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost…

【Java后端】MyBatis 與 MyBatis-Plus 如何防止 SQL 注入?從原理到實戰

在日常開發中&#xff0c;SQL 注入是一種常見但危害巨大的安全漏洞。如果你正在使用 MyBatis 或 MyBatis-Plus 進行數據庫操作&#xff0c;這篇文章將帶你系統了解&#xff1a;這兩個框架是如何防止 SQL 注入的&#xff0c;我們又該如何寫出安全的代碼。 什么是 SQL 注入&#…