」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 。眼睛鍵盤

。眼睛鍵盤

發佈於2024-08-20
瀏覽:961

. eys Keyboard

650。 2鍵鍵盤

難度:

主題: 數學、動態規劃

記事本的螢幕上只有一個字元「A」。您可以在此記事本上為每個步驟執行以下兩個操作之一:

  • 全部複製:您可以複製螢幕上出現的所有字元(不允許部分複製)。
  • 貼上:可以貼上上次複製的字元。

給定一個整數n,返回在螢幕上準確地出現n次字元「A」的最少操作次數

範例1:

  • 輸入: n = 3
  • 輸出: 3
  • 解釋: 最初,我們有一個字元「A」。
    • 在步驟1中,我們使用全部複製操作。
    • 在步驟2中,我們使用貼上操作得到'AA'。
    • 在第3步中,我們使用貼上作業來取得'AAA'。

範例2:

  • 輸入: n = 1
  • 輸出: 0

範例3:

  • 輸入: n = 10
  • 輸出: 7

範例2:

  • 輸入: n = 24
  • 輸出: 9

約束:

  • 1

暗示:

  1. 如果n = 3,最後一步剪貼簿中可能有多少個字元? n = 7? n = 10? n = 24?

解決方案:

我們需要找到最少的操作次數才能在螢幕上精確地顯示 n 個字元「A」。我們將使用動態編程方法來實現這一目標。

  1. 理解問題:

    • 我們從螢幕上的一個「A」開始。
    • 我們可以「全部複製」(複製目前螢幕內容)或「貼上」(貼上最後複製的內容)。
    • 我們需要確定螢幕上剛好有 n 個字元「A」所需的最少操作。
  2. 動態規劃方法:

    • 使用動態程式設計 (DP) 陣列 dp,其中 dp[i] 表示在螢幕上精確取得 i 個字元所需的最少操作數。
    • 初始化 dp[1] = 0,因為需要 0 次操作才能在螢幕上顯示一個「A」。
    • 對於從 2 到 n 的每個字元 i,透過檢查 i 的每個除數來計算最少運算。如果 i 能被 d 整除,則:
      • 達到 i 所需的運算次數是達到 d 的運算加上 d 相乘得到 i 所需的運算次數。
  3. 解決步驟:

    • 使用 INF(或一個大數字)初始化 DP 數組,以獲得除 dp[1] 之外的所有值。
    • 對於從 2 到 n 的每個 i,迭代 i 的可能除數,並根據透過複製和貼上達到 i 所需的操作更新 dp[i]。

讓我們用 PHP 實作這個解決方案:650。 2鍵鍵盤

解釋:

  • 初始化: dp 被初始化為一個很大的數字(PHP_INT_MAX),以表示最初不可達的狀態。
  • 除數檢查: 對於每個數字 i,檢查所有除數 d。考慮到達 d 所需的操作然後相乘得到 i 來更新 dp[i]。
  • 輸出: 結果是 dp[n] 的值,它給出了在螢幕上精確取得 n 個字元所需的最少操作。

這種方法確保我們針對給定的限制有效地計算最少的操作。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給存儲庫 一顆星,或者在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub
版本聲明 本文轉載於:https://dev.to/mdarifulhaque/650-2-keys-keyboard-57n0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 物件導向 - Java 中的方法
    物件導向 - Java 中的方法
    在Java中的物件導向程式設計中,方法在定義類別和物件的行為中起著至關重要的作用。它們允許您執行操作、操縱資料以及與其他物件互動。它們允許您執行操作、操縱資料以及與其他物件互動。在本文中,我們將探討 Java 中的方法、它們的特性以及如何有效地使用它們。 什麼是方法? 方法是類別中...
    程式設計 發佈於2024-11-06
  • 如何使用 MAMP 修復 Mac 上 Laravel 遷移中的「沒有這樣的檔案或目錄」錯誤?
    如何使用 MAMP 修復 Mac 上 Laravel 遷移中的「沒有這樣的檔案或目錄」錯誤?
    解決Mac 上Laravel 遷移中的「沒有這樣的文件或目錄」錯誤簡介: ]當嘗試在Mac 上的Laravel 專案中執行「php artisan migrate」指令時,使用者經常會遇到找不到檔案或目錄的錯誤。這個令人沮喪的問題可能會阻礙遷移過程並阻止開發人員在專案中取得進展。在本文中,我們將深入...
    程式設計 發佈於2024-11-06
  • SOLID 原則使用一些有趣的類比與車輛範例
    SOLID 原則使用一些有趣的類比與車輛範例
    SOLID 是電腦程式設計中五個良好原則(規則)的縮寫。 SOLID 允許程式設計師編寫更易於理解和稍後更改的程式碼。 SOLID 通常與使用物件導向設計的系統一起使用。 讓我們使用車輛範例來解釋 SOLID 原理。想像一下,我們正在設計一個系統來管理不同類型的車輛,例如汽車和...
    程式設計 發佈於2024-11-06
  • 如何從另一個非同步函數中的非同步函數返回解析值?
    如何從另一個非同步函數中的非同步函數返回解析值?
    如何從非同步函數傳回一個值? 在提供的程式碼中,init()方法傳回一個Promise,但getPostById() 方法嘗試直接存取 Promise 傳回的值。為了解決這個問題,需要修改 init() 方法,使其在 Promise 解析後傳回 getPostById() 的值。 更新後的程式碼如下...
    程式設計 發佈於2024-11-06
  • 了解如何使用 React 建立多人國際象棋遊戲
    了解如何使用 React 建立多人國際象棋遊戲
    Hello and welcome! ?? Today I bring a tutorial to guide you through building a multiplayer chess game using SuperViz. Multiplayer games require real-t...
    程式設計 發佈於2024-11-06
  • 如何使用 JavaScript 正規表示式驗證 DD/MM/YYYY 格式的日期?
    如何使用 JavaScript 正規表示式驗證 DD/MM/YYYY 格式的日期?
    使用JavaScript 正規表示式驗證DD/MM/YYYY 格式的日期驗證日期是程式設計中的常見任務,並且能夠確保日期採用特定格式至關重要。在 JavaScript 中,正規表示式提供了執行此類驗證的強大工具。 考慮用於驗證YYYY-MM-DD 格式日期的正規表示式模式:/^\d{4}[\/\-]...
    程式設計 發佈於2024-11-06
  • JavaScript 中的節流與去抖:初學者指南
    JavaScript 中的節流與去抖:初學者指南
    使用 JavaScript 時,過多的事件觸發器可能會降低應用程式的速度。例如,使用者調整瀏覽器視窗大小或在搜尋列中輸入內容可能會導致事件在短時間內重複觸發,進而影響應用程式效能。 這就是節流和去抖可以發揮作用的地方。它們可以幫助您管理在處理過於頻繁觸發的事件時呼叫函數的頻率。 ...
    程式設計 發佈於2024-11-06
  • 在 Go 中匯入私人 Bitbucket 儲存庫時如何解決 403 Forbidden 錯誤?
    在 Go 中匯入私人 Bitbucket 儲存庫時如何解決 403 Forbidden 錯誤?
    Go 從私有Bitbucket 儲存庫匯入問題排查(403 禁止)使用go get 指令從Bitbucket.org 匯入私人儲存庫可能會遇到403 Forbidden 錯誤。若要解決此問題,請依照下列步驟操作:1.建立 SSH 連線:確保您已設定 SSH 金鑰並且能夠使用 SSH 連線至 Bitb...
    程式設計 發佈於2024-11-06
  • Singleton 和原型 Spring Bean 範圍:詳細探索
    Singleton 和原型 Spring Bean 範圍:詳細探索
    当我第一次开始使用 Spring 时,最让我感兴趣的概念之一是 bean 范围的想法。 Spring 提供了各种 bean 作用域,用于确定在 Spring 容器内创建的 bean 的生命周期。最常用的两个范围是 Singleton 和 Prototype。了解这些范围对于设计高效且有效的 Spri...
    程式設計 發佈於2024-11-06
  • 如何有效平滑雜訊資料曲線?
    如何有效平滑雜訊資料曲線?
    優化平滑雜訊曲線考慮近似的資料集:import numpy as np x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) np.random.random(100) * 0.2這包括 20% 的變化。 UnivariateSpline 和移動平均線等方...
    程式設計 發佈於2024-11-06
  • 如何在 MySQL 中為有序序列值重新編號主索引?
    如何在 MySQL 中為有序序列值重新編號主索引?
    為有序序列值重新編號主索引如果您的MySQL 表的主索引(id) 以不一致的順序出現(例如,1、 31, 35, 100),您可能會想要將它們重新排列成連續的系列(1, 2, 3, 4)。 要實現此目的,您可以採用以下方法而不建立臨時表:SET @i = 0; UPDATE table_name S...
    程式設計 發佈於2024-11-06
  • 增強的物​​件文字
    增強的物​​件文字
    ES6引進了3種編寫物件字面量的方法 第一種方法: - ES6 Enhanced object literal syntax can take an external object like salary object and make it a property of the developer...
    程式設計 發佈於2024-11-06
  • 將 Tailwind 配置為設計系統
    將 Tailwind 配置為設計系統
    对于设计系统来说,一致性和理解性就是一切。一个好的设计系统通过实现它的代码的配置来确保实现的一致性。它需要是: 易于理解,无需放弃良好设计所需的细微差别; 可扩展和可维护,且不影响一致性。 使用我的 React 和 Tailwind 的默认堆栈,我将向您展示如何设置自己的版式、颜色和间距默认值,而不...
    程式設計 發佈於2024-11-06
  • 如何根據條件替換 Pandas DataFrame 列中的特定值?
    如何根據條件替換 Pandas DataFrame 列中的特定值?
    Pandas DataFrame:基於條件的目標值取代在Pandas中,通常需要根據某些條件修改DataFrame中的特定值。雖然常見的方法是使用 loc 來選擇行,但了解如何精確定位特定列進行值修改至關重要。 考慮以下 DataFrame,我們希望在其中替換“第一季”中的值超過 1990 且整數為...
    程式設計 發佈於2024-11-06
  • 如何修正 CentOS 7 上的 Yum Baseurl 問題
    如何修正 CentOS 7 上的 Yum Baseurl 問題
    _CentOS 7 Yum Error: Cannot Find a Valid Baseurl for Repo:base/7/x86_64_ 嘿夥計們, 遇到錯誤 can't find a valid baseurl for repo:base/7/x86_64 可能會非常令人沮喪,特別...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3