原始计算器 - 动态方法

2024-03-31

我在获得以下问题的正确解决方案时遇到一些困难:

你的目标是一个正整数n,找到最少的数量 从数字 1 开始获取数字 n 所需的操作。

更具体地说,我在下面的评论中有测试用例。

 # Failed case #3/16: (Wrong answer)
    # got: 15 expected: 14
    # Input:
    # 96234
    #
    # Your output:
    # 15
    # 1 2 4 5 10 11 22 66 198 594 1782 5346 16038 16039 32078 96234
    # Correct output:
    # 14
    # 1 3 9 10 11 22 66 198 594 1782 5346 16038 16039 32078 96234
    #  (Time used: 0.10/5.50, memory used: 8601600/134217728.)


    def optimal_sequence(n):
        sequence = []

        while n >= 1:
            sequence.append(n)

            if n % 3 == 0:
                n = n // 3
                optimal_sequence(n)

            elif n % 2 == 0:
               n = n // 2
               optimal_sequence(n)

            else:
               n = n - 1
               optimal_sequence(n)

        return reversed(sequence)

    input = sys.stdin.read()
    n = int(input)
    sequence = list(optimal_sequence(n))
    print(len(sequence) - 1)
    for x in sequence:
        print(x, end=' ')

看起来我应该在输出 4 和 5 的地方输出 9,但我不确定为什么情况并非如此。解决此问题的最佳方法是什么?


你正在做一种贪婪的方法。 当 n == 10 时,您会检查它是否能被 2 整除,假设这是最佳步骤,但在本例中这是错误的。

您需要做的是适当的动态规划。v[x]将保留获得结果的最少步骤数x.

def solve(n):
  v = [0]*(n+1)  # so that v[n] is there
  v[1] = 1  # length of the sequence to 1 is 1
  for i in range(1,n):
    if not v[i]: continue
    if v[i+1] == 0 or v[i+1] > v[i] + 1: v[i+1] = v[i] + 1
    # Similar for i*2 and i*3
  
  solution = []
  while n > 1:
    solution.append(n)
    if v[n-1] == v[n] - 1: n = n-1
    if n%2 == 0 and v[n//2] == v[n] -1: n = n//2
    # Likewise for n//3
  solution.append(1)
  return reverse(solution)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原始计算器 - 动态方法 的相关文章

随机推荐

  • setNavigationItemSelectedListener 不工作

    My NavigationView onClick活动不起作用 以下是我一一尝试过的代码片段 但没有任何效果 实施NavigationView OnNavigationItemSelectedListener using OnClick M
  • Angular Ivy 在手动变更检测方面具体允许我们做什么?

    本文 https blog ninja squad com 2019 05 07 what is angular ivy 提到 不过 常春藤为未来开启了一些可能性 现在应该可以在没有 zone js 的情况下运行应用程序 并半手动处理更改检
  • 列表子列表优化

    问题是从给定列表中查找不包含大于指定上限数字的子列表总数right并且子列表的最大数量应该大于下限left假设我的清单是 x 2 0 11 3 0 子列表元素的上限是10下界是1那么我的子列表可以是 2 2 0 3 3 0 因为子列表始终是
  • Interlocked.Exchange 可空小数

    我想交换两个可为空的十进制值 如下所示 o2 Interlocked Exchange ref o1 o2 类型 十进制 必须是引用类型才能将其用作泛型类型或方法 System Threading Interlocked Exchange
  • 尝试在单独的实例中打开工作簿

    不确定我做得是否正确 请建议我 我正在尝试在新实例中打开一本工作簿 但有些地方效果不太好 下面是代码供您参考 我正在尝试在新实例中打开名为 Loginfrm 的表单 假设如果另一个工作簿已打开 则当前代码也会冻结该工作簿 理想情况下 这不应
  • 添加/删除程序中的 Wix 图标

    我正在使用 Wix 来创建我的安装程序 据官方称文档 http wixtoolset org documentation manual v3 howtos ui and localization configure arp appearan
  • 访问路径被拒绝 (Xamarin/Android)

    我运行的是 Windows 10 Visual Studio 2015 和 Xamarin 我对 Xamarin 相当陌生 只是为了设置地面水平 我最近更新后遇到了一个问题 我的应用程序在更新之前可以正常运行 我的所有文件都是只读的 更新之
  • 尝试使用 Jersey 创建 REt 服务

    我正在关注this http www vogella com articles REST article html first使用 Jersey 创建 REt 服务的教程 有时我无法完全理解本教程作者的意思 但这些是我到目前为止所遵循的步骤
  • lit-element 将数据从一个组件传递到另一个组件

    我目前正在学习如何使用 lit element v2 0 0 rc 2 我有两个组件 app js 和 list items js 在 app js 中 我从本地存储收集数据并将其存储在 this todoList 中 然后我在 list
  • Python 多处理性能

    这应该是我的第三个也是最后一个问题 涉及我尝试提高使用 python 进行的一些统计分析的性能 我的代码有 2 个版本 单核与多处理 我希望通过使用多个核心来获得性能 因为我希望我的代码能够解压 解压相当多的二进制字符串 遗憾的是我注意到使
  • 颜色分类库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Status 我正在开发自己的图书馆 https stackoverflow com question
  • 响应式设计,网站在手机上不滚动

    我正在设计一个响应式网站 它在桌面上运行良好 但当我在手机中测试时 我无法滚动页面 所以我只能看到适合设备高度的内容 注意 我什至包含了元名称 viewport 内容 宽度 设备宽度 initial scale 1 0 请帮我 你问这个问题
  • 使用 Keras 循环神经网络进行预测 - 准确度始终为 1.0

    TLDR 如何使用 Keras RNN 预测序列中的下一个值 我有一个连续值列表 我想将它们输入 RNNpredict序列中的下一个值 0 43589744 0 44230769 0 49358974 0 71153846 0 708333
  • PHP 脚本到 Traceroute?

    我有一个在 GoDaddy 共享 Linux 服务器上运行 PHP 的网站 我需要确定用户是否连接到公司 VPN 如果我简单地执行 SERVER REMOTE ADDR 它会给我客户端的 IP 地址 但是 如果我可以使用 Tracert 进
  • 无法使用 R 的 leaflet 包循环生成多个地图

    这是新来的 对 R 来说也相对较新 所以请原谅 apriori 并让我知道我在这篇文章中做错了什么 以避免将来烦扰其他人 我正在尝试创建传单地图序列 1971 年 9 月至 1972 年 4 月 最后 我想将它们压缩成闪亮的 并让用户播放
  • chrome.storage.local.set 使用变量键名

    在 Google Chrome 扩展中 我想使用chrome storage local http code google com chrome extensions storage html property local 与 localS
  • Xcode 7.2.1 的问题

    刚刚安装新版本的Xcode 7 2 1 他花了比预期更长的时间 但是当它完成并运行时 xcode 继续使用版本 7 1 1 我以为重启Mac就可以解决这个问题 但是没有 知道可以花什么吗 或者碰巧我已经完成了 EDITED 我的MAC版本
  • 如何修复从底部切掉的字体?

    我在应用程序中有自定义字体 我正在使用它Text如下 struct CustomButton View var label String var action gt Void init label String action escapin
  • Windows Phone Soap/添加 Web 参考问题

    我有一个 SOAP 由 Java 提供支持 服务 我正在尝试连接到 WP7 使用Add gt Service Reference生成代理客户端 但不幸的是 删除了 WP7 和 完整 NET 4 上方法的所有参数 使用 slsvcutil e
  • 原始计算器 - 动态方法

    我在获得以下问题的正确解决方案时遇到一些困难 你的目标是一个正整数n 找到最少的数量 从数字 1 开始获取数字 n 所需的操作 更具体地说 我在下面的评论中有测试用例 Failed case 3 16 Wrong answer got 15