華為OD機(jī)試“攀登者1”題解:狀態(tài)機(jī)與數(shù)組處理的實(shí)戰(zhàn)邏輯
1. 項(xiàng)目概述從一道題看華為OD機(jī)試的實(shí)戰(zhàn)邏輯最近在幫幾個(gè)準(zhǔn)備華為OD機(jī)試的朋友做模擬輔導(dǎo)發(fā)現(xiàn)一個(gè)挺有意思的現(xiàn)象很多人一看到“攀登者1”這種題目第一反應(yīng)是去網(wǎng)上搜現(xiàn)成的答案或者直接套用一些經(jīng)典的動(dòng)態(tài)規(guī)劃模板。這其實(shí)走入了一個(gè)誤區(qū)。華為OD的機(jī)試尤其是C卷的題目它考核的從來不是你對某道“原題”的背誦能力而是你在有限時(shí)間內(nèi)將模糊的業(yè)務(wù)描述轉(zhuǎn)化為清晰的計(jì)算模型并用穩(wěn)定、高效的代碼實(shí)現(xiàn)出來的綜合能力?!芭实钦?”就是一個(gè)典型的例子它披著“登山”的外衣內(nèi)核卻是一個(gè)關(guān)于數(shù)組處理、邏輯判斷與邊界條件的扎實(shí)演練。這道題本質(zhì)上并不復(fù)雜但非??简?yàn)基本功的扎實(shí)程度和思維的嚴(yán)謹(jǐn)性。它適合所有正在準(zhǔn)備華為OD機(jī)試尤其是使用C的開發(fā)者無論你是想檢驗(yàn)自己的基礎(chǔ)編碼能力還是想學(xué)習(xí)如何拆解這類“場景化”的算法題。通過這道題我們能清晰地看到華為OD機(jī)試的一個(gè)核心出題思路用生活化的場景包裝一個(gè)或多個(gè)基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)點(diǎn)重點(diǎn)考察實(shí)現(xiàn)過程的魯棒性和對細(xì)節(jié)的掌控力。接下來我們就拋開那些華而不實(shí)的解題報(bào)告直接從題目邏輯入手一步步拆解、實(shí)現(xiàn)并優(yōu)化。2. 題目核心邏輯與需求拆解在拿到任何機(jī)試題時(shí)第一步絕不是著急寫代碼而是必須徹底、無歧義地理解題目在說什么。我們基于常見的“攀登者”類題型注意具體題目描述可能略有差異但核心模型一致進(jìn)行邏輯還原。2.1 問題場景抽象假設(shè)我們有一個(gè)登山者他記錄了自己在一條登山路徑上每隔一段距離或時(shí)間的海拔高度。這個(gè)記錄形成了一個(gè)整數(shù)數(shù)組heights。題目通常會(huì)定義什么是“攀登”攀登動(dòng)作從當(dāng)前位置i到下一個(gè)位置i1如果heights[i1] heights[i]則算作一次向上攀登。目標(biāo)統(tǒng)計(jì)在整個(gè)登山過程中總共發(fā)生了多少次連續(xù)的向上攀登動(dòng)作。這里的關(guān)鍵詞是“連續(xù)的”。這意味著一旦出現(xiàn)heights[i1] heights[i]的情況即平路或下坡當(dāng)前的連續(xù)攀登就中斷了。下一次再開始上坡時(shí)會(huì)開啟一段新的連續(xù)攀登。2.2 輸入輸出規(guī)格與邊界確認(rèn)一個(gè)合格的實(shí)現(xiàn)必須嚴(yán)格遵循題目給定的接口。我們假設(shè)題目要求如下這是此類題目的典型要求輸入一個(gè)字符串表示用空格分隔的海拔高度序列。例如1 2 3 2 4 5 4。輸出一個(gè)整數(shù)表示總的連續(xù)攀登次數(shù)。邊界條件與細(xì)節(jié)思考這是拿滿分的關(guān)鍵空數(shù)組或單元素?cái)?shù)組如果輸入只有1個(gè)或0個(gè)高度那么顯然沒有“從一個(gè)點(diǎn)到下一個(gè)點(diǎn)”的動(dòng)作攀登次數(shù)應(yīng)為0。連續(xù)相等的高度例如[2, 2, 3]。從第一個(gè)2到第二個(gè)2是平路不構(gòu)成攀登且中斷了之前的連續(xù)攀登狀態(tài)。從第二個(gè)2到3是上坡這算作一次新的連續(xù)攀登的開始也是結(jié)束。長連續(xù)上坡例如[1, 2, 3, 4]。這是一個(gè)完整的連續(xù)攀登過程從1到2、2到3、3到4都在攀登。但題目要求統(tǒng)計(jì)的是“連續(xù)的攀登”次數(shù)而不是攀登的“步數(shù)”。對于一段從位置start開始到位置end結(jié)束的連續(xù)上坡它只被計(jì)為1次連續(xù)攀登。這是很多初學(xué)者容易混淆的地方。輸入格式處理題目給的是字符串我們需要將其安全、正確地解析為整數(shù)數(shù)組。要處理首尾空格、中間的多空格等情況。2.3 算法思路選擇思路非常直接屬于**一次遍歷One Pass**即可解決的線性問題時(shí)間復(fù)雜度為 O(N)空間復(fù)雜度為 O(1)如果不算輸入存儲(chǔ)。核心狀態(tài)機(jī)思想 我們可以定義一個(gè)狀態(tài)變量isClimbing用來表示當(dāng)前是否處于一段連續(xù)的攀登過程中。初始化count 0,isClimbing false。從i 0遍歷到n-2因?yàn)槊看伪容^i和i1如果heights[i1] heights[i]如果isClimbing false說明這是一段新攀登的開始。設(shè)置isClimbing true并且count。如果isClimbing true說明正在攀登中繼續(xù)即可不做任何操作。否則即heights[i1] heights[i]無論isClimbing是什么狀態(tài)都將其設(shè)置為false。因?yàn)檫B續(xù)攀登被中斷了。這個(gè)思路清晰地將“一段連續(xù)攀登”作為一個(gè)整體事件來處理符合題目語義。3. C實(shí)現(xiàn)詳解與代碼打磨理解了邏輯我們用C來實(shí)現(xiàn)。這里不僅要寫出能跑的代碼更要寫出健壯、清晰、符合華為OD考試要求的代碼。華為OD的機(jī)試環(huán)境通常比較標(biāo)準(zhǔn)支持C11/14輸入輸出常用cin/cout或getline。3.1 輸入處理模塊這是實(shí)戰(zhàn)中第一個(gè)容易失分點(diǎn)。題目輸入往往是一行字符串。#include iostream #include vector #include sstream #include string using namespace std; vectorint parseInput(const string input) { vectorint heights; istringstream iss(input); int height; while (iss height) { heights.push_back(height); } return heights; }為什么用istringstream安全性自動(dòng)處理空格分割比手動(dòng)遍歷字符串并截取子串再轉(zhuǎn)換 (stoi) 更安全、簡潔。魯棒性能天然處理字符串開頭、結(jié)尾、中間的多余空格??勺x性代碼意圖清晰。注意在實(shí)際考試中務(wù)必確認(rèn)輸入方式。有時(shí)可能是直接循環(huán)cin num直到文件尾。但如果是明確給出單行字符串格式上述方法更穩(wěn)妥。3.2 核心統(tǒng)計(jì)函數(shù)實(shí)現(xiàn)根據(jù)前面的狀態(tài)機(jī)思路我們實(shí)現(xiàn)核心邏輯。int countContinuousClimbs(const vectorint heights) { int n heights.size(); // 邊界情況不足兩個(gè)點(diǎn)無法構(gòu)成一次移動(dòng) if (n 2) { return 0; } int climbCount 0; bool inClimb false; // 當(dāng)前是否正處于一段連續(xù)的攀登中 for (int i 0; i n - 1; i) { if (heights[i 1] heights[i]) { // 遇到上坡 if (!inClimb) { // 這是一段新攀登的開始 inClimb true; climbCount; } // 如果已經(jīng)在攀登中則繼續(xù)無需任何操作 } else { // 遇到平路或下坡當(dāng)前連續(xù)攀登狀態(tài)肯定結(jié)束 inClimb false; } } return climbCount; }代碼要點(diǎn)解析提前處理邊界在函數(shù)開頭就處理n 2的情況避免后續(xù)循環(huán)出現(xiàn)越界或邏輯錯(cuò)誤。這是一種良好的防御式編程習(xí)慣。清晰的變量名climbCount,inClimb讓人一眼就能看懂其作用優(yōu)于簡單的cnt,flag。循環(huán)條件i n - 1確保我們總是比較i和i1且i1不越界。邏輯分支清晰if (heights[i 1] heights[i])是核心判斷else處理所有非上坡情況簡潔明了。3.3 另一種更簡潔的實(shí)現(xiàn)思路對于這道題我們甚至可以不用inClimb狀態(tài)變量通過觀察可以發(fā)現(xiàn)一段連續(xù)攀登的開始必然滿足一個(gè)條件當(dāng)前位置是上坡且前一個(gè)位置不是上坡或者是數(shù)組開頭。int countContinuousClimbsConcise(const vectorint heights) { int n heights.size(); if (n 2) return 0; int count 0; for (int i 0; i n - 1; i) { // 當(dāng)前是上坡 if (heights[i 1] heights[i]) { // 并且要么是數(shù)組的第一個(gè)元素要么前一個(gè)位置不是上坡 if (i 0 || heights[i] heights[i - 1]) { count; } } } return count; }兩種實(shí)現(xiàn)的對比與選擇狀態(tài)機(jī)版本邏輯更符合直覺思維過程“開始攀登”、“結(jié)束攀登”易于在復(fù)雜狀態(tài)遷移時(shí)擴(kuò)展。簡潔版本代碼行數(shù)少直接通過局部條件判斷但需要稍微繞一下彎來理解“攀登開始”的條件??荚嚱ㄗh推薦使用狀態(tài)機(jī)版本。雖然多幾行代碼但邏輯流非常清晰在時(shí)間緊張的考試中清晰的邏輯意味著更少的思維負(fù)擔(dān)和調(diào)試時(shí)間。機(jī)器判題只看結(jié)果不扣“代碼風(fēng)格分”清晰可靠比極致簡短更重要。3.4 主函數(shù)與完整可運(yùn)行代碼將以上模塊組合起來并考慮從標(biāo)準(zhǔn)輸入讀取。int main() { string line; // 使用getline讀取一整行輸入 while (getline(cin, line)) { // 處理可能的空行某些輸入用例可能以空行結(jié)束 if (line.empty()) { // 在實(shí)際考試中請根據(jù)題目說明決定是否break // 這里我們選擇跳過空行繼續(xù)讀直到無輸入 continue; } vectorint heights parseInput(line); int result countContinuousClimbs(heights); // 或使用簡潔版本 cout result endl; // 如果題目明確說明只有一行輸入可以在此break; // 否則循環(huán)讀取直到文件尾(EOF) } return 0; }主函數(shù)設(shè)計(jì)心得while (getline(cin, line))是一種非常穩(wěn)健的輸入處理方式它能兼容單行和多行輸入直到遇到文件結(jié)束符在OJ系統(tǒng)中輸入結(jié)束時(shí)自動(dòng)觸發(fā)EOF。內(nèi)部對line.empty()的判斷增加了容錯(cuò)性防止解析空字符串。輸出時(shí)直接cout result endl確保格式完全符合題目要求通常就是一個(gè)整數(shù)加換行。4. 測試用例設(shè)計(jì)與調(diào)試技巧寫完代碼不代表結(jié)束設(shè)計(jì)全面的測試用例進(jìn)行驗(yàn)證是機(jī)試高分甚至滿分的保障。你不能依賴OJ的樣例必須自己多想。4.1 必須覆蓋的測試用例集測試用例描述輸入字符串預(yù)期輸出驗(yàn)證目的基礎(chǔ)功能1 2 3 2 4 52典型場景兩段攀登(1-2-3 和 2-4-5)空輸入0處理空行或空輸入單元素1000邊界條件無法構(gòu)成移動(dòng)純遞增1 2 3 4 51一整段長攀登只計(jì)1次純遞減5 4 3 2 10沒有上坡平路穿插1 2 2 3 41平路(2-2)中斷了第一段但之后2-3是上坡開啟新攀登不2-2是平路inClimb置false2-3是上坡且inClimb為false所以計(jì)1次。正確下坡后上坡5 1 2 311-2-3構(gòu)成一段攀登開頭即下坡3 1 21只有2-3不是1-2構(gòu)成一段攀登。索引h[0]3, h[1]1(下坡)h[2]2。比較i0: 13?否inClimbfalse。i1: 21?是且inClimb為falsecount1, inClimbtrue。結(jié)束。復(fù)雜序列0 1 0 2 1 2 33攀登段0-1, 0-2, 1-2-34.2 本地調(diào)試與輸出中間變量在本地IDE如VSCode、CLion中調(diào)試時(shí)不要只看最終結(jié)果。可以在核心循環(huán)里添加臨時(shí)打印觀察狀態(tài)變化。int debugCountContinuousClimbs(const vectorint heights) { int n heights.size(); if (n 2) { cout 數(shù)組長度小于2直接返回0 endl; return 0;} int climbCount 0; bool inClimb false; cout 索引\t當(dāng)前值\t下一值\t動(dòng)作\t\tinClimb\tclimbCount endl; for (int i 0; i n - 1; i) { cout i \t heights[i] \t heights[i1]; if (heights[i 1] heights[i]) { cout \t上坡; if (!inClimb) { inClimb true; climbCount; cout (新開始); } else { cout (持續(xù)中); } } else { cout \t平/下坡; inClimb false; } cout \t (inClimb?是:否) \t climbCount endl; } return climbCount; }運(yùn)行這個(gè)調(diào)試函數(shù)輸入1 2 3 2 4 5你會(huì)得到一張清晰的跟蹤表瞬間理解程序每一步的邏輯。這在遇到邏輯錯(cuò)誤時(shí)非常有用。4.3 華為OD機(jī)試環(huán)境注意事項(xiàng)編譯器與標(biāo)準(zhǔn)通常是GCC支持C11/14。避免使用太新的特性如C17的std::filesystem或std::optional。輸入輸出效率對于本題輸入規(guī)模很小cin/cout完全足夠。但如果遇到大數(shù)據(jù)量輸入十萬、百萬級(jí)別務(wù)必在main函數(shù)開頭加上ios::sync_with_stdio(false); cin.tie(nullptr);來關(guān)閉C和C流的同步大幅提升輸入輸出效率。這是一個(gè)重要的性能技巧。全局變量慎用全局變量。盡量將變量定義在函數(shù)內(nèi)部。因?yàn)镺J系統(tǒng)可能多次調(diào)用你的函數(shù)全局變量如果不重置會(huì)導(dǎo)致上一次的結(jié)果影響下一次。頭文件只包含必要的頭文件。#include bits/stdc.h這種萬能頭在有些考試環(huán)境中可能不被允許或影響編譯速度穩(wěn)妥起見還是老實(shí)用具體的頭文件。代碼結(jié)構(gòu)像我們上面那樣將輸入解析、核心邏輯、主控流程分開成函數(shù)是很好的實(shí)踐。這不僅是代碼清晰更重要的是在調(diào)試時(shí)你可以很方便地單獨(dú)測試每個(gè)部分。5. 常見錯(cuò)誤與思維拓展5.1 新手常犯的典型錯(cuò)誤誤解“連續(xù)攀登”的含義錯(cuò)誤地將每一步上坡都算作一次計(jì)數(shù)。例如[1,2,3]輸出2因?yàn)?-2, 2-3兩次上坡而正確答案是1這是一整段連續(xù)攀登。邊界處理缺失沒有考慮數(shù)組長度為0或1的情況導(dǎo)致循環(huán)或索引訪問越界程序崩潰。輸入處理錯(cuò)誤假設(shè)輸入以特定字符如逗號(hào)分割或者沒有處理字符串首尾空格導(dǎo)致stoi轉(zhuǎn)換失敗。狀態(tài)重置錯(cuò)誤在else分支平路或下坡只重置了狀態(tài)但忘記處理某些邊界。我們的邏輯中只要不是上坡就一定中斷攀登這個(gè)邏輯是完備的。輸出格式錯(cuò)誤多輸出空格、換行或者少輸出換行。嚴(yán)格按照題目要求的“一個(gè)整數(shù)”輸出通常就是cout answer endl;。5.2 題目可能的變體與拓展思考“攀登者1”是基礎(chǔ)形態(tài)。掌握它之后可以思考一些變體這能極大鍛煉你的舉一反三能力應(yīng)對考場上的新題變體1統(tǒng)計(jì)攀登的總高度差。不再是數(shù)次數(shù)而是累加所有上坡階段的高度差之和。這時(shí)狀態(tài)機(jī)依然好用在inClimb為真時(shí)持續(xù)累加heights[i1] - heights[i]當(dāng)攀登中斷或結(jié)束時(shí)將累加值保存或輸出。變體2找出最長連續(xù)攀登的長度步數(shù)。需要維護(hù)一個(gè)currentClimbLength變量在上坡持續(xù)時(shí)遞增在攀登中斷時(shí)與maxClimbLength比較并更新最大值然后重置currentClimbLength。變體3攀登者2虛構(gòu)可能引入體力的概念上坡消耗體力下坡恢復(fù)體力求是否能登頂。這就變成了一個(gè)模擬題可能需要貪心或動(dòng)態(tài)規(guī)劃。5.3 從這道題總結(jié)的華為OD機(jī)試備戰(zhàn)策略刷題在精不在多像“攀登者1”這樣的題徹底搞懂一道勝過模糊地刷十道。要深入理解其問題抽象、邏輯建模、邊界處理、代碼實(shí)現(xiàn)、測試驗(yàn)證的全過程。建立自己的代碼模板對于輸入處理、輸出格式、常用數(shù)據(jù)結(jié)構(gòu)初始化可以形成肌肉記憶。例如處理單行空格分隔數(shù)字的parseInput函數(shù)就可以成為你的模板之一。重視本地調(diào)試能力考試時(shí)沒有IDE的強(qiáng)力調(diào)試器但你可以用cout進(jìn)行“打印調(diào)試”。平時(shí)練習(xí)時(shí)就要習(xí)慣這種方式快速定位問題。時(shí)間分配建議10-15分鐘讀題、分析、設(shè)計(jì)測試用例20-25分鐘編碼5-10分鐘測試和檢查。留出時(shí)間檢查邊界和格式?;剡^頭看“攀登者1”這道題本身并不難但它像一面鏡子能清晰地照出一個(gè)程序員的基礎(chǔ)是否扎實(shí)、思維是否嚴(yán)謹(jǐn)、代碼是否穩(wěn)健。在華為OD的考場上把這種基礎(chǔ)題做得又快又準(zhǔn)是獲得高分的基石。希望這份超詳細(xì)的拆解能幫助你不僅搞定這一道題更能掌握應(yīng)對這一類題的方法論。

相關(guān)新聞

C++11 auto與范圍for循環(huán):現(xiàn)代C++編程的核心利器

C++11 auto與范圍for循環(huán):現(xiàn)代C++編程的核心利器

1. 項(xiàng)目概述&#xff1a;為什么我們需要 auto 和范圍 for 循環(huán)&#xff1f;如果你寫過一段時(shí)間的 C&#xff0c;尤其是維護(hù)過一些老舊的代碼庫&#xff0c;你肯定對那種冗長、重復(fù)的類型聲明深惡痛絕。想象一下&#xff0c;你面對一個(gè)std::map<std::string, std::vector<…

2026/7/30 5:01:48 閱讀更多
無人機(jī)視角斑馬線目標(biāo)檢測數(shù)據(jù)集 可檢測車輛違停識(shí)別 使用 YOLOv5 來處理無人機(jī)視角下的斑馬線目標(biāo)檢測任務(wù)。

無人機(jī)視角斑馬線目標(biāo)檢測數(shù)據(jù)集 可檢測車輛違停識(shí)別 使用 YOLOv5 來處理無人機(jī)視角下的斑馬線目標(biāo)檢測任務(wù)。

Yolo訓(xùn)練無人機(jī)視角斑馬線目標(biāo)檢測數(shù)據(jù)集 檢測車輛違停識(shí)別 使用 YOLOv5 來處理無人機(jī)視角下的斑馬線目標(biāo)檢測任務(wù)。 文章目錄**1. 環(huán)境搭建**安裝依賴無人機(jī)視角斑馬線目標(biāo)檢測數(shù)據(jù)集 數(shù)據(jù)類型&#xff1a;圖片yolo格式標(biāo)簽 類別&#xff1a;斑馬線 數(shù)據(jù)準(zhǔn)備到模型訓(xùn)練、…

2026/7/30 5:01:48 閱讀更多
Python字典核心原理與實(shí)戰(zhàn):從哈希表到高頻應(yīng)用場景解析

Python字典核心原理與實(shí)戰(zhàn):從哈希表到高頻應(yīng)用場景解析

1. 項(xiàng)目概述&#xff1a;從“頭歌”實(shí)訓(xùn)看Python字典的實(shí)戰(zhàn)價(jià)值最近在輔導(dǎo)一些同學(xué)完成湖南大學(xué)“頭歌”平臺(tái)的Python實(shí)訓(xùn)作業(yè)&#xff0c;發(fā)現(xiàn)“實(shí)驗(yàn)9&#xff1a;字典”這個(gè)關(guān)卡&#xff0c;成了不少新手從理解語法到實(shí)際應(yīng)用的一道分水嶺。很多人學(xué)Python&#xff0c;列表、…

2026/7/30 4:51:48 閱讀更多
5分鐘徹底掌握R3nzSkin換膚工具:從安裝到清理的完整指南

5分鐘徹底掌握R3nzSkin換膚工具:從安裝到清理的完整指南

5分鐘徹底掌握R3nzSkin換膚工具&#xff1a;從安裝到清理的完整指南 【免費(fèi)下載鏈接】R3nzSkin Skin changer for League of Legends (LOL) 項(xiàng)目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款專為《英雄聯(lián)盟》玩家設(shè)計(jì)的開源換膚工具&#xff0c;通…

2026/7/30 5:51:52 閱讀更多
Anaconda虛擬環(huán)境創(chuàng)建與Jupyter內(nèi)核配置全攻略

Anaconda虛擬環(huán)境創(chuàng)建與Jupyter內(nèi)核配置全攻略

1. 項(xiàng)目緣起&#xff1a;為什么我們需要“隔離”Python如果你剛開始接觸Python&#xff0c;或者已經(jīng)用了一段時(shí)間&#xff0c;可能會(huì)遇到一個(gè)非常頭疼的問題&#xff1a;項(xiàng)目A需要TensorFlow 2.10&#xff0c;而項(xiàng)目B需要TensorFlow 1.15。你費(fèi)了九牛二虎之力裝好了2.10&#x…

2026/7/30 5:51:52 閱讀更多
STM32驅(qū)動(dòng)OLED屏幕全攻略:從I2C/SPI通信到菜單系統(tǒng)設(shè)計(jì)

STM32驅(qū)動(dòng)OLED屏幕全攻略:從I2C/SPI通信到菜單系統(tǒng)設(shè)計(jì)

1. 項(xiàng)目概述&#xff1a;從點(diǎn)亮到驅(qū)動(dòng)&#xff0c;掌握OLED屏幕的精髓玩STM32的兄弟&#xff0c;估計(jì)沒人能繞過OLED這塊屏。它不像LCD那樣需要背光&#xff0c;自發(fā)光帶來的高對比度和極低功耗&#xff0c;讓它在小尺寸顯示領(lǐng)域幾乎成了標(biāo)配。我第一次用OLED是在一個(gè)便攜式氣象…

2026/7/30 5:51:51 閱讀更多
校園問卷調(diào)查與數(shù)據(jù)分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

校園問卷調(diào)查與數(shù)據(jù)分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

校園問卷調(diào)查與數(shù)據(jù)分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)實(shí)訓(xùn) 目的1.掌握前后端分離架構(gòu)設(shè)計(jì)思想&#xff1a;理解 SpringBoot 3 Vue 3 前后端分離架構(gòu)的分層原則與模塊劃分方法&#xff0c;掌握 B/S 模式下表現(xiàn)層、接入層、應(yīng)用層、數(shù)據(jù)訪問層和基礎(chǔ)設(shè)施層的協(xié)同工作機(jī)制。 …

2026/7/30 5:41:51 閱讀更多
[GESP202606 四級(jí)] 掃雷

[GESP202606 四級(jí)] 掃雷

B4557 [GESP202606 四級(jí)] 掃雷 https://www.luogu.com.cn/problem/B4557 中國計(jì)算機(jī)學(xué)會(huì)&#xff08;CCF&#xff09;2026年6月C四級(jí)講解——掃雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四級(jí)] 掃雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:01:06 閱讀更多