”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 。眼睛键盘

。眼睛键盘

发布于2024-08-20
浏览:146

. 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]删除
最新教程 更多>
  • PHP中如何使用Header()函数正确设置图像显示的Content Type?
    PHP中如何使用Header()函数正确设置图像显示的Content Type?
    php:通过多个文件格式显示图像解决此问题,建议采用更全面的方法。这是基于文件扩展名确定正确的内容类型的方法: $ filename = basename($ file); $ file_extension = strtolower(substr(strrchr($ filename,“。”),...
    编程 发布于2025-04-19
  • 在CSS中如何根据子元素样式父元素?
    在CSS中如何根据子元素样式父元素?
    基于CSS 在设计网页时的样式元素,对于基于所包含的子元素的样式元素时,它对于样式元素很有用。 While CSS currently lacks the ":containing" pseudo-class to directly address this requirem...
    编程 发布于2025-04-19
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-04-19
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-04-19
  • JavaScript计算两个日期之间天数的方法
    JavaScript计算两个日期之间天数的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    编程 发布于2025-04-19
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-04-19
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-19
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-19
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-04-19
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-19
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-04-19
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    在node-mysql node-mysql文档最初出于安全原因最初禁用多个语句支持,因为它可能导致SQL注入攻击。要启用此功能,您需要在创建连接时将倍增设置设置为true: var connection = mysql.createconnection({{multipleStatement:...
    编程 发布于2025-04-19
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-04-19
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-04-19
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。要简化过程,建议将JSON作为数组而不是对象解析。执行此操作,将JSON_DECODE函数与第二个参数设置为true:[&&&&& && &&&&& json = JSON = JSON_DECODE($ j...
    编程 发布于2025-04-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3