代码日亚麻布布局的出现

第 19 天:亚麻布布局

github 解决方案

今天的挑战与通常的 2d 谜题和 dijkstra 算法相比有令人耳目一新的变化。以下是我的处理方法:

第 1 部分

目标很简单:检查是否可以使用可用的毛巾创建给定的毛巾布置。

不应该做什么:

最初,我尝试使用 itertools.combinations 生成所有可能的毛巾组合。很快我们就发现这既不实用也不高效。

什么有效:

使用递归结合字典(备忘录)来缓存已经处理过的设计。这可以防止冗余计算并使解决方案更加高效。

工作原理:

对于每个设计,尝试将开头与其中一种毛巾图案相匹配。
如果存在匹配,则删除匹配的部分并递归剩余的部分。
使用备忘录缓存我们已经检查过的设计结果,避免重复工作。
具有记忆功能的递归方法使复杂性保持可控,即使对于较大的输入也是如此,并使解决方案高效运行。

第二部分
第二部分提高了赌注:计算使用可用图案制作每条毛巾设计的方法数。

关键见解:
count_arrangements 函数扩展了第 1 部分中的递归逻辑,但现在计算构建设计的所有可能方法。

对于每条匹配的毛巾,递归设计的其余部分。
使用另一个字典(memo_count)来缓存之前解决的子问题的结果。

示例:
如果“brgr”可以通过两种方式构造,我们只需从缓存中返回 2,而不用重新计算它。

优化:
感谢第 1 部分,我们已经知道哪些设计是可能的。我们只计算这些的安排。

for arrangement in arrangements:    if arrangement in memo and memo[arrangement]:        ways = count_arrangements(arrangement, towels, memo_count)        total_arrangements += ways

登录后复制

通过总结所有有效的方法,我们得到了第二部分的最终答案,就这么简单。

就像我说的,我发现今天的挑战很有趣,是一个很好的改变。我希望这篇文章对未来的挑战/编码有所帮助。

一如既往,请随时在 twitter 上关注我或联系我

以上就是代码日亚麻布布局的出现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2174859.html

(0)
上一篇 2025年2月25日 12:25:10
下一篇 2025年2月18日 03:03:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何构建口罩检测系统:初学者实用指南

    基于Python、OpenCV和预训练模型的口罩检测系统 口罩检测在covid-19大流行期间至关重要。本文将指导您如何使用python、opencv和预训练深度学习模型构建一个简单的口罩检测系统。本项目基于已发表的“口罩检测应用和数据集”…

    2025年2月25日
    200
  • 如何使用 ghs 运行 llama b bf

    lambda 实验室现在推出 gh200 半价优惠,以让更多人习惯 arm 工具。这意味着您实际上可能有能力运行最大的开源模型!唯一需要注意的是,您有时必须从源代码构建一些东西。以下是我如何让 llama 405b 在 gh200s 上高精…

    2025年2月25日
    200
  • Python Day-List 理解-练习

    列表理解 当您想要基于现有列表的值创建新列表时,列表理解提供了更短的语法。 (参考-https://www.w3schools.com/python/python_lists_comprehension.asp) 示例:1方法:1 frui…

    编程技术 2025年2月25日
    200
  • Altikrity 简介:多层加密库

    Altikrity是一个强大的多层加密Python库,旨在保护您的代码和敏感数据。无论是防止未授权访问,还是保护机密信息,Altikrity都能提供可靠的解决方案。 核心功能: 多层加密: 采用多层加密机制,抵御多种安全威胁。简易API: …

    2025年2月25日
    200
  • 使用 AppSignal 在 Django 中查找并修复 N+ueries

    在本文中,您将了解 n 1 查询、如何使用 appsignal 检测它们,以及如何修复它们以显着加快 django 应用程序的速度。 我们将从理论方面开始,然后转向实际示例。实际示例将反映您在生产环境中可能遇到的场景。 让我们开始吧! 什么…

    2025年2月25日 编程技术
    200
  • 代码日到来键盘难题

    第 21 天:键盘难题 github 存储库 – 解决方案 今天的挑战很难,我花了两天时间才解决,也完全理解了逻辑。今年我发现,我很难理解这些说明的意图。 我希望您像我一样从这个挑战和解决方案中学到了一些东西。我发现每年参加“a…

    编程技术 2025年2月25日
    200
  • 标题:使用 Python 构建评分系统:

    开发社区您好! 我很高兴分享我的评分系统工作簿,这是我的第一个 Python 项目之一!当我深入研究 Python 时,我想创建一些实用的东西,可以用来根据各种输入条件有效地计算成绩。 项目概况 该项目涉及创建一个评分系统,根据分数和权重等…

    编程技术 2025年2月25日
    200
  • 周末任务 – 列表

    任务:1s =“a4k3b2” 1) 编写一个程序来获取输出 ‘abbbbklllbcc’ s = “a4k3b2″output = “”i = 0while i < len(s): first = s[i] …

    2025年2月25日
    200
  • PyTorch 中的 ImageNet

    请我喝杯咖啡☕ *我的帖子解释了 imagenet。 imagenet()可以使用imagenet数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个…

    2025年2月25日
    200
  • 从想法到代码:我如何构建 Python 文本编辑器

    我的首篇文章,期待您的宝贵反馈! 项目构想 2023年2月,我萌生了一个想法:开发一个类似Roblox的应用程序。经过反复思考,最终确定了我的首个IDE项目——XediX。 开发历程 2023年4月14日,我向AI寻求开发指导。由于当时对P…

    2025年2月25日
    200

发表回复

登录后才能评论