Kimi    LeetCode LCP 25. 古董键盘 Python3实现 LCP 25. 古董键盘 — Python3 实现核心思路问题26 个字母每个最多按 k 次共按 n 次求能打出多少种不同的字符串。动态规划- dp[i] 表示当前已考虑的字母中构成长度为 i 的字符串的方案数。- 考虑一个新字母时假设它在最终字符串中出现 x 次0 ≤ x ≤ k- 从 i 个位置中选 x 个放该字母C(i, x)- 剩余 i-x 个位置由之前字母填充dp[i-x]- 转移new_dp[i] Σ(dp[i-x] × C(i, x))空间优化只需一维滚动数组26 次迭代即可。---完整代码可直接提交pythonclass Solution:def keyboard(self, k: int, n: int) - int:MOD 10**9 7# 预计算组合数 C[i][x]从 i 个位置中选 x 个# i 最大 n≤130x 最大 k≤5数值很小C [[0] * (k 1) for _ in range(n 1)]for i in range(n 1):C[i][0] 1for x in range(1, min(k, i) 1):C[i][x] C[i - 1][x - 1] C[i - 1][x]# dp[i]已考虑的字母中构成长度为 i 的字符串的方案数dp [0] * (n 1)dp[0] 1 # 0 种字母、长度 0只有空串 1 种for _ in range(26): # 依次考虑 26 个字母 a~znew_dp [0] * (n 1)for i in range(n 1): # 目标长度# 当前字母选 x 个x ∈ [0, min(k, i)]for x in range(min(k, i) 1):new_dp[i] (new_dp[i] dp[i - x] * C[i][x]) % MODdp new_dpreturn dp[n]---关键点说明要点 说明C(i, x) 从 i 个位置中选 x 个放当前字母用帕斯卡递推预计算滚动数组 每处理一个字母就更新一次 dp空间 O(n)初始状态 dp[0] 1表示空串其余为 0取模 每次累加后 % MOD防止溢出复杂度- 时间O(26 × n × k) ≈ O(n·k)常数很小- 空间O(n·k) 预计算组合数 O(n) DP 数组验证- k1, n1 → dp[1] 经过 26 个字母后 26 ✓- k1, n2 → 从 26 个字母选 2 个排列 26×25 650 ✓

相关新闻

最新新闻

AHP层次分析法:从主观决策到科学量化的多准则评估指南

AHP层次分析法:从主观决策到科学量化的多准则评估指南

1. 从“拍脑袋”到“算出来”:为什么我们需要AHP 如果你曾经参与过任何需要做决策的场合,无论是公司里评选年度优秀员工、选择供应商,还是个人生活中纠结于“该买哪款手机”、“该去哪个城市发展”,你大概率经历过一种熟悉的痛苦&…

2026/8/24 17:18:18
常见WEB漏洞—SQL 注入

常见WEB漏洞—SQL 注入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */ #content_views .toc, /* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */ #content_vie…

2026/8/24 17:18:18
AestheticDialogs 1.x 到 2.0 迁移完全指南:从 XML Builder 到声明式 Compose 对话框

AestheticDialogs 1.x 到 2.0 迁移完全指南:从 XML Builder 到声明式 Compose 对话框

AestheticDialogs 1.x 到 2.0 迁移完全指南:从 XML Builder 到声明式 Compose 对话框 【免费下载链接】AestheticDialogs 📱 An Android Library built with Jetpack Compose for 💫 fluid, 😍 beautiful, 🎨 custom D…

2026/8/24 17:18:18
Rim窗口分割算法:Frame与Section二叉分裂树如何实现分割、关闭与调整大小

Rim窗口分割算法:Frame与Section二叉分裂树如何实现分割、关闭与调整大小

Rim窗口分割算法:Frame与Section二叉分裂树如何实现分割、关闭与调整大小 【免费下载链接】rim Aspiring vim-like text editor 项目地址: https://gitcode.com/gh_mirrors/ri/rim Rim 是一个用 Rust 编写的类 Vim 文本编辑器,它的窗口分割算法非…

2026/8/24 17:18:18
RACE-Bench:评测AI代码智能体在仓库级功能开发中的真实能力

RACE-Bench:评测AI代码智能体在仓库级功能开发中的真实能力

1. 从“单文件”到“仓库级”:代码智能体的能力跃迁与评测困境最近和几个做AI代码生成工具的朋友聊天,大家普遍有个感觉:现在的代码大模型,在单个函数、单个文件级别的补全和生成上,已经做得相当不错了。无论是GitHub …

2026/8/24 17:18:18
torch-dct核心原理揭秘:DCT变换凭什么支持反向传播?可微分实现的终极答案

torch-dct核心原理揭秘:DCT变换凭什么支持反向传播?可微分实现的终极答案

torch-dct核心原理揭秘:DCT变换凭什么支持反向传播?可微分实现的终极答案 【免费下载链接】torch-dct DCT (discrete cosine transform) functions for pytorch 项目地址: https://gitcode.com/gh_mirrors/to/torch-dct torch-dct 是一个面向 PyT…

2026/8/24 17:13:17