news 2026/5/31 15:15:52

数位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/30 21:26:02

符号设计的魔法:得意黑如何让每个标点都恰到好处

在数字时代&#xff0c;字体不仅是文字的载体&#xff0c;更是情感表达的延伸。当设计师面对满屏字符时&#xff0c;是否曾为标点符号的突兀而感到困扰&#xff1f;&#x1f615; 得意黑&#xff08;Smiley Sans&#xff09;作为一款在人文观感与几何特征间寻找完美平衡的中文黑…

作者头像 李华
网站建设 2026/5/31 0:48:53

Wan2.2-T2V-A14B模型在气象预报可视化中的动态呈现能力

Wan2.2-T2V-A14B模型在气象预报可视化中的动态呈现能力系统性技术整合与工程落地视角下的创新应用 当台风路径图上的红色箭头缓缓移动&#xff0c;公众往往只能凭借经验去“脑补”风雨将至的画面。而今天&#xff0c;我们正站在一个转折点上&#xff1a;人工智能不再只是处理数…

作者头像 李华
网站建设 2026/5/31 0:48:41

抖音资源高效管理:5大实战场景下的批量下载与智能整理攻略

抖音资源高效管理&#xff1a;5大实战场景下的批量下载与智能整理攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为喜爱的抖音内容无法系统管理而困扰&#xff1f;想要打造个人专属的短视频知识库&…

作者头像 李华
网站建设 2026/5/30 23:40:29

如何快速掌握Lean数学库mathlib:从零基础到精通的完整指南

如何快速掌握Lean数学库mathlib&#xff1a;从零基础到精通的完整指南 【免费下载链接】mathlib Lean 3s obsolete mathematical components library: please use mathlib4 项目地址: https://gitcode.com/gh_mirrors/ma/mathlib mathlib作为Lean证明助手的核心数学组件…

作者头像 李华
网站建设 2026/5/31 0:48:41

MultiHighlight代码高亮插件:5分钟掌握高效代码阅读神器

MultiHighlight代码高亮插件&#xff1a;5分钟掌握高效代码阅读神器 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors &#x1f3a8;&#x1f4a1; 项目地址: https://gitcode.com/gh_mirrors/mu/MultiHighlight 你是否…

作者头像 李华
网站建设 2026/5/31 0:48:46

终极指南:快速上手泰拉瑞亚模组开发与安装

还在为泰拉瑞亚原版内容玩腻而烦恼吗&#xff1f;想要打造专属的游戏体验吗&#xff1f;tModLoader作为官方认证的模组加载器&#xff0c;将彻底改变你的游戏世界&#xff01;本指南将带你从零开始&#xff0c;快速掌握模组安装与配置的核心技能。 【免费下载链接】tModLoader …

作者头像 李华