華為OD機試真題——通過軟盤拷貝文件(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

在這里插入圖片描述

2025 A卷 200分 題型

本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析;
并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式!

本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》

華為OD機試真題《通過軟盤拷貝文件》:


目錄

    • 題目名稱:通過軟盤拷貝文件
      • 題目描述
    • Java
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析
    • python
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析
    • JavaScript
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析
    • C++
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析
    • C語言
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
        • 1. 輸入處理
        • 2. 塊數計算
        • 3. 動態規劃數組初始化
        • 4. 核心狀態轉移
        • 5. 結果輸出
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析
        • 1. 時間復雜度
        • 2. 空間復雜度
        • 3. 優勢
        • 4. 適用場景
    • GO
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
        • 1. 輸入處理
        • 2. 讀取文件大小
        • 3. 塊數計算
        • 4. 動態規劃數組初始化
        • 5. 核心狀態轉移
        • 6. 結果輸出
      • 示例測試
        • 示例1輸入:
        • 示例2輸入:
        • 示例3輸入:
      • 綜合分析


題目名稱:通過軟盤拷貝文件


  • 知識點:動態規劃(01背包)
  • 時間限制:1秒
  • 空間限制:256MB
  • 限定語言:不限

題目描述

科學家需要從古董電腦中拷貝文件到軟盤,軟盤容量為 1474560 字節。文件存儲按塊分配,每個塊 512 字節,一個塊只能被一個文件占用。文件必須完整拷貝且不壓縮。目標是使軟盤中文件總大小最大。

輸入描述

  • 第1行為整數 N,表示文件數量(1 ≤ N < 1000)。
  • 第2行到第N+1行,每行為一個整數,表示文件大小 Si(單位:字節,0 < Si ≤ 1000000)。

輸出描述

  • 輸出科學家能拷貝的最大文件總大小。

示例
輸入:

3  
737270  
737272  
737288  

輸出:

1474542  

說明

  • 文件塊計算方式:每個文件大小向上取整到512的倍數。例如737270字節占用 ceil(737270/512) = 1440 塊。
  • 軟盤總塊數為 1474560/512 = 2880 塊。選擇前兩個文件占用 1440 + 1440 = 2880 塊,總大小為 737270 + 737272 = 1474542 字節。

補充說明

  • 動態規劃(01背包問題)或回溯法是典型解法。文件塊為背包容量,文件大小為價值,需最大化總價值。

Java

問題分析

我們需要在給定多個文件的情況下,選擇一些文件拷貝到軟盤上,使得總塊數不超過軟盤容量,同時總文件大小最大。每個文件的大小按512字節向上取整計算塊數。這是一個典型的0-1背包問題,其中背包容量是軟盤的總塊數,每個文件的體積是其塊數,價值是文件實際大小。


解題思路

  1. 塊數計算:對每個文件大小,計算其占用的塊數(向上取整到512的倍數)。
  2. 動態規劃:使用動態規劃求解0-1背包問題。定義dp[i]為容量i時的最大總價值。
  3. 結果構造:遍歷所有可能的容量,找到最大總價值。

代碼實現

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt(); // 讀取文件數量int[] sizes = new int[N]; // 存儲每個文件的大小for (int i = 0; i < N; i++) {sizes[i] = scanner.nextInt();}int totalBlocks = 1474560 / 512; // 軟盤總塊數2880int[] dp = new int[totalBlocks + 1]; // dp數組,dp[i]表示容量i時的最大總價值for (int size : sizes) { // 遍歷每個文件int blocks = (size + 511) / 512; // 計算塊數:向上取整int value = size; // 價值是文件實際大小// 逆序更新dp數組,確保每個文件只選一次for (int j = totalBlocks; j >= blocks; j--) {if (dp[j - blocks] + value > dp[j]) {dp[j] = dp[j - blocks] + value;}}}// 找出dp數組中的最大值int max = 0;for (int j = 0; j <= totalBlocks; j++) {if (dp[j] > max) {max = dp[j];}}System.out.println(max);}
}

代碼詳細解析

  1. 輸入處理

    • Scanner讀取輸入,N為文件數量,sizes數組存儲每個文件的大小。
  2. 塊數計算

    • 每個文件的塊數通過(size + 511) / 512計算,實現向上取整。
  3. 動態規劃數組初始化

    • dp數組長度為totalBlocks + 1,初始值為0。
  4. 動態規劃過程

    • 對每個文件,逆序遍歷容量(從totalBlocks到當前文件塊數),更新dp數組。
    • 逆序更新確保每個文件僅被考慮一次,符合0-1背包要求。
  5. 結果提取

    • 遍歷dp數組,找到最大值即為答案。

示例測試

示例1輸入:
3  
737270  
737272  
737288  

輸出

1474542  

解析

  • 塊數分別為1440、1440、1441。選中前兩個文件,總塊數2880,總價值1474542。
示例2輸入:
2  
513 1023  

輸出

1023  

解析

  • 塊數分別為2(513→2塊)、2(1023→2塊)。總塊數4,容量2880遠大于4。選1023。
示例3輸入:
1  
1474560  

輸出

0  

解析

  • 塊數2880,超過軟盤容量2880?文件大小1474560正好占用2880塊,總和等于容量,輸出1474560?

注意:示例3可能存在錯誤,實際塊數為1474560 /512 = 2880塊。若文件大小1474560,則塊數2880,總塊數剛好等于容量,應輸出1474560。可能需要驗證題目條件。


綜合分析

  1. 時間復雜度:O(N × M),其中N為文件數量,M為總塊數(2880)。滿足題目時間限制。
  2. 空間復雜度:O(M),動態規劃數組僅需線性空間。
  3. 優勢
    • 動態規劃高效解決背包問題。
    • 塊數計算準確,確保正確性。
  4. 適用場景:適用于文件數量大但總塊數適中的場景。

python

問題分析

我們需要選擇若干文件拷貝到軟盤上,使得總塊數不超過軟盤容量,同時總文件大小最大。每個文件大小需向上取整到512字節的塊數。這是典型的0-1背包問題,塊數為容量,文件實際大小為價值。


解題思路

  1. 塊數計算:每個文件大小向上取整到512的倍數。
  2. 動態規劃:使用一維數組 dp 表示容量為 i 時的最大總價值。
  3. 逆序更新:確保每個文件只被選擇一次。

代碼實現

def main():import sysinput = sys.stdin.read().split()idx = 0N = int(input[idx])  # 讀取文件數量idx += 1sizes = []for _ in range(N):sizes.append(int(input[idx]))  # 讀取所有文件大小idx += 1total_blocks = 1474560 // 512  # 總塊數2880dp = [

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

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

相關文章

一起學數據結構和算法(二)| 數組(線性結構)

數組&#xff08;Array&#xff09; 數組是最基礎的數據結構&#xff0c;在內存中連續存儲&#xff0c;支持隨機訪問。適用于需要頻繁按索引訪問元素的場景。 簡介 數組是一種線性結構&#xff0c;將相同類型的元素存儲在連續的內存空間中。每個元素通過其索引值&#xff08;數…

ZYNQ sdk lwip配置UDP組播收發數據

?? 一、顛覆認知:組播 vs 單播 vs 廣播 通信方式目標設備網絡負載典型應用場景單播1對1O(n)SSH遠程登錄廣播1對全網O(1)ARP地址解析組播1對N組O(1)視頻會議/物聯網群控創新價值:在智能工廠中,ZYNQ通過組播同時控制100臺AGV小車,比傳統單播方案降低92%網絡流量! ?? 二、…

機器學習:欠擬合、過擬合、正則化

本文目錄&#xff1a; 一、欠擬合二、過擬合三、擬合問題原因及解決辦法四、正則化&#xff1a;盡量減少高次冪特征的影響&#xff08;一&#xff09;L1正則化&#xff08;二&#xff09;L2正則化&#xff08;三&#xff09;L1正則化與L2正則化的對比 五、正好擬合代碼&#xf…

Linux命令之ausearch命令

一、命令簡介 ausearch 是 Linux 審計系統 (auditd) 中的一個實用工具,用于搜索審計日志中的事件。它是審計框架的重要組成部分,可以幫助系統管理員分析系統活動和安全事件。 二、使用示例 1、安裝ausearch命令 Ubuntu系統安裝ausearch命令,安裝后啟動服務。 root@testser…

mac電腦安裝nvm

方案一、常規安裝 下載安裝腳本&#xff1a;在終端中執行以下命令來下載并運行 NVM 的安裝腳本3&#xff1a; bash curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.39.5/install.sh | bash配置環境變量&#xff1a;安裝完成后&#xff0c;需要配置環境變量。如…

Excel 操作 轉圖片,轉pdf等

方式一 spire.xls.free&#xff08;沒找設置分辨率的方法&#xff09; macOs開發Java GUI程序提示缺少字體問題解決 Spire.XLS&#xff1a;一款Excel處理神器_spire.xls免費版和收費版的區別-CSDN博客 官方文檔 Spire.XLS for Java 中文教程 <dependency><groupI…

oracle goldengate實現遠程抽取postgresql 到 postgresql的實時同步【絕對無坑版,親測流程驗證】

oracle goldengate實現postgresql 到 postgresql的實時同步 源端&#xff1a;postgresql1 -> postgresql2 流復制主備同步 目標端&#xff1a;postgresql 數據庫版本&#xff1a;postgresql 12.14 ogg版本&#xff1a;21.3 架構圖&#xff1a; 數據庫安裝以及流復制主備…

2.從0開始搭建vue項目(node.js,vue3,Ts,ES6)

從“0到跑起來一個 Vue 項目”&#xff0c;重點是各個工具之間的關聯關系、職責邊界和技術演化脈絡。 從你寫代碼 → 到代碼能跑起來 → 再到代碼可以部署上線&#xff0c;每一步都有不同的工具參與。 &#x1f63a;&#x1f63a;1. 安裝 Node.js —— 萬事的根基 Node.js 是…

MQTT的Thingsboards的使用

訪問云服務 https://thingsboard.cloud/ 新建一個設備 彈出 默認是mosquittor的客戶端。 curl -v -X POST http://thingsboard.cloud/api/v1/tnPrO76AxF3TAyOblf9x/telemetry --header Content-Type:application/json --data "{temperature:25}" 換成MQTTX的客戶…

金磚國家人工智能高級別論壇在巴西召開,華院計算應邀出席并發表主題演講

當地時間5月20日&#xff0c;由中華人民共和國工業和信息化部&#xff0c;巴西發展、工業、貿易與服務部&#xff0c;巴西公共服務管理和創新部以及巴西科技創新部聯合舉辦的金磚國家人工智能高級別論壇&#xff0c;在巴西首都巴西利亞舉行。 中華人民共和國工業和信息化部副部…

BLE協議全景圖:從0開始理解低功耗藍牙

BLE(Bluetooth Low Energy)作為一種針對低功耗場景優化的通信協議,已經廣泛應用于智能穿戴、工業追蹤、智能家居、醫療設備等領域。 本文是《BLE 協議實戰詳解》系列的第一篇,將從 BLE 的發展歷史、協議棧結構、核心機制和應用領域出發,為后續工程實戰打下全面認知基礎。 …

表單校驗代碼和樹形結構值傳遞錯誤解決

表單校驗代碼&#xff0c;兩種方式校驗&#xff0c;自定義的一種校驗&#xff0c;與element-ui組件原始的el-form表單的校驗不一樣&#xff0c;需要傳遞props和rules過去校驗 const nextStep () > {const data taskMsgInstance.value.formDataif(data.upGradeOrg ) {elm…

vscode 配置 QtCreat Cmake項目

1.vscode安裝CmakeTool插件并配置QT中cmake的路徑&#xff0c;不止這一處 2.cmake生成器使用Ninja&#xff08;Ninja在安裝QT時需要勾選&#xff09;&#xff0c;可以解決[build] cc1plus.exe: error: too many filenames given; type ‘cc1plus.exe --help’ for usage 編譯時…

關于數據倉庫、數據湖、數據平臺、數據中臺和湖倉一體的概念和區別

我們談論數據中臺之前&#xff0c; 我們也聽到過數據平臺、數據倉庫、數據湖、湖倉一體的相關概念&#xff0c;它們都與數據有關系&#xff0c;但他們和數據中臺有什么樣的區別&#xff0c; 下面我們將圍繞數據平臺、數據倉庫、數據湖和數據中臺的區別進行介紹。 一、相關概念…

WIN11+eclipse搭建java開發環境

環境搭建&#xff08;WIN11ECLIPSE&#xff09; 安裝JAVA JDK https://www.oracle.com/cn/java/technologies/downloads/#jdk24安裝eclipse https://www.eclipse.org/downloads/ 注意&#xff1a;eclipse下載時指定aliyun的軟件源&#xff0c;后面安裝會快一些。默認是jp漢化e…

通義靈碼深度實戰測評:從零構建智能家居控制中樞,體驗AI編程新范式

一、項目背景&#xff1a;零基礎挑戰全棧智能家居系統 目標&#xff1a;開發具備設備控制、環境感知、用戶習慣學習的智能家居控制中樞&#xff08;PythonFlaskMQTTReact&#xff09; 挑戰點&#xff1a; 需集成硬件通信(MQTT)、Web服務(Flask)、前端交互(React) 調用天氣AP…

【Python進階】CPython

目錄 ?? 前言??? 技術背景與價值?? 當前技術痛點??? 解決方案概述?? 目標讀者說明?? 一、技術原理剖析?? 核心架構圖解?? 核心作用講解?? 關鍵技術模塊說明?? Python實現對比??? 二、實戰演示?? 環境配置要求?? 核心代碼實現案例1:查看字節碼案例…

Hive中資源優化方法的詳細說明

在Hive中&#xff0c;資源優化的核心目標是合理分配集群資源&#xff08;如內存、CPU、任務并行度等&#xff09;&#xff0c;避免資源競爭和浪費&#xff0c;提升查詢效率。以下是資源優化的具體方法&#xff0c;涵蓋 YARN資源配置、任務并行度、內存管理、JVM重用、推測執行 …

流媒體協議分析:流媒體傳輸的基石

在流媒體傳輸過程中&#xff0c;協議的選擇至關重要&#xff0c;它決定了數據如何封裝、傳輸和解析&#xff0c;直接影響著視頻的播放質量和用戶體驗。本文將深入分析幾種常見的流媒體傳輸協議&#xff0c;探討它們的特點、應用場景及優缺點。 協議分類概述 流媒體傳輸協議根據…

GitHub 趨勢日報 (2025年05月29日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖 1864 agenticSeek 753 langflow 749 n8n 736 prompt-eng-interactive-tutorial 42…