news 2026/5/16 21:27:24

数位dp

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数位dp

lc1012
参数设计(数位DP递归函数 f )
- i :当前处理的数位下标(从0开始,到数字长度 m 结束),控制遍历进度。


- mask :10位二进制数,标记已用数字(第d位为1表示数字d已用),防重复。


- is_limit :布尔值,标记当前数位是否受 n 对应位限制(true则最多填 n 当前位数字,false可填0-9),确保不超n。


- is_num :布尔值,标记是否已组成合法数字(false可跳过当前位,true需枚举有效数字),处理前导零。


- 记忆化 memo[i][mask] :缓存无限制、已组成合法数字时,第i位+已用数字为mask的无重复数个数,减重复计算。

class Solution {
public:
int numDupDigitsAtMostN(int n) {
auto s = to_string(n);
int m = s.length(), memo[m][1 << 10];
memset(memo, -1, sizeof(memo)); // -1 表示没有计算过


function<int(int, int, bool, bool)> f = [&](int i, int mask, bool is_limit, bool is_num) -> int {
if (i == m)
return is_num; // is_num 为 true 表示得到了一个合法数字
if (!is_limit && is_num && memo[i][mask] != -1)
return memo[i][mask];
int res = 0;
if (!is_num) // 可以跳过当前数位
res = f(i + 1, mask, false, false);
int up = is_limit ? s[i] - '0' : 9; // 如果前面填的数字都和 n 的一样,那么这一位至多填数字 s[i](否则就超过 n 啦)
for (int d = 1 - is_num; d <= up; ++d) // 枚举要填入的数字 d
if ((mask >> d & 1) == 0) // d 不在 mask 中
res += f(i + 1, mask | (1 << d), is_limit && d == up, true);
if (!is_limit && is_num)
memo[i][mask] = res; // 记忆化搜索
return res;
};
return n - f(0, 0, true, false);
}
};

lc1147

递归迭代的写

return 2 + longestDecomposition(s.substr(i, n - i * 2));

class Solution {
public:
int longestDecomposition(string s) {
if (s.empty())
return 0;
for (int i = 1, n = s.length(); i <= n / 2; ++i) // 枚举前后缀长度
if (s.substr(0, i) == s.substr(n - i)) // 立刻分割
return 2 + longestDecomposition(s.substr(i, n - i * 2));
return 1; // 无法分割
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 21:26:58

Wan2.2-T2V-A14B模型版权问题解析:生成内容归属权探讨

Wan2.2-T2V-A14B模型版权问题解析&#xff1a;生成内容归属权探讨 在影视广告制作周期动辄数周、成本动辄百万的今天&#xff0c;AI正在悄然改写游戏规则。一条原本需要导演、摄影师、演员和后期团队协作完成的8秒广告短片&#xff0c;现在仅需输入一句“夏日海滩&#xff0c;情…

作者头像 李华
网站建设 2026/5/16 21:27:14

Wan2.2-T2V-A14B在房地产虚拟看房视频中的应用

Wan2.2-T2V-A14B在房地产虚拟看房视频中的应用 在房地产营销的数字化浪潮中&#xff0c;一个越来越明显的痛点浮出水面&#xff1a;购房者想要“身临其境”&#xff0c;但开发商却难以低成本、高效率地提供真实感强的沉浸式内容。传统的样板间拍摄周期长、成本高&#xff0c;3…

作者头像 李华
网站建设 2026/5/3 22:21:51

Daz到Blender终极资产迁移指南:快速实现角色无缝导入

Daz到Blender终极资产迁移指南&#xff1a;快速实现角色无缝导入 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 想要将Daz Studio中精心制作的3D角色完美导入Blender进行进一步创作&#xff1f;DazTo…

作者头像 李华
网站建设 2026/5/12 6:00:28

34、深入探索bash:编辑模式、可加载内置命令与可编程补全

深入探索bash:编辑模式、可加载内置命令与可编程补全 1. emacs与vi编辑模式命令 在bash中,emacs和vi编辑模式提供了丰富的命令来提高文本编辑效率。 1.1 emacs模式命令 emacs模式下有众多实用命令,以下是部分常用命令及其含义: | 命令 | 含义 | | — | — | | CTRL …

作者头像 李华
网站建设 2026/5/13 11:15:51

Ctool开发效率工具集合:从编码烦恼到一站式解决方案

Ctool开发效率工具集合&#xff1a;从编码烦恼到一站式解决方案 【免费下载链接】Ctool 程序开发常用工具 chrome / edge / firefox / utools / windows / linux / mac 项目地址: https://gitcode.com/gh_mirrors/ct/Ctool 你是否曾经为了一个简单的BASE64转换而打开三个…

作者头像 李华