尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kimi    LeetCode 3906. 统计网格路径中好整数的数目 C语言实现
以下是 LeetCode 3906 的 C 语言实现采用数位 DP 思路。由于 C 没有内置的递归记忆化使用静态数组手动实现记忆化搜索。c#include stdio.h#include stdlib.h#include string.h// 全局/静态变量用于 DFSstatic bool key[16];static long long memo[16][10];static char s[17]; // 16位数字 \0static long long dfs(int pos, int last, bool lim) {if (pos 16) {return 1;}// 非受限状态且已计算过直接返回if (!lim memo[pos][last] ! -1) {return memo[pos][last];}long long res 0;// 当前位的下界如果是关键位必须 last否则从 0 开始int start key[pos] ? last : 0;// 当前位的上界如果受限则为 s[pos]否则为 9int end lim ? (s[pos] - 0) : 9;for (int i start; i end; i) {int next_last key[pos] ? i : last;bool next_lim lim (i end);res dfs(pos 1, next_last, next_lim);}// 只有非受限状态才缓存结果if (!lim) {memo[pos][last] res;}return res;}static long long calc(long long x) {if (x 0) {return 0;}// 将 x 补齐为 16 位字符串snprintf(s, sizeof(s), %016lld, x);// 初始化记忆化数组为 -1for (int i 0; i 16; i) {for (int j 0; j 10; j) {memo[i][j] -1;}}return dfs(0, 0, true);}long long countGoodIntegersOnPath(long long l, long long r, char* directions) {// 标记路径上访问的 7 个关键格子memset(key, 0, sizeof(key));int row 0, col 0;key[0] true; // 起点 (0,0)for (int i 0; directions[i] ! \0; i) {if (directions[i] D) {row;} else {col;}key[row * 4 col] true;}return calc(r) - calc(l - 1);}关键思路说明1. 路径预处理directions 恰好包含 3 个 D 和 3 个 R从 (0,0) 出发走 6 步到达 (3,3)。将路径上经过的 7 个格子在 16 位字符串中的位置row * 4 col标记为 key[pos] true。2. 数位 DP将数字补齐为 16 位后逐位枚举。对于每个位置 pos- 如果 key[pos] true路径上的格子当前位必须 ≥ 上一个路径格子的值last同时更新 last。- 如果 key[pos] false非路径上的格子可以填任意数字 0~9last 保持不变。3. 受限状态 lim表示当前位是否被上界 s[pos] 限制。如果受限当前位最大只能填 s[pos]否则可以填到 9。只有非受限状态的结果可以缓存到 memo 数组中。4. 区间转换通过 calc(r) - calc(l - 1) 得到 [l, r] 范围内的答案。时间复杂度 O(16 \times 10 \times 10)空间复杂度 O(16 \times 10)。
RELATED

相关推荐

GB/T 12459-2025 新国标完整技术解读|替代 2017 版,管道工程师必看

GB/T 12459-2025 新国标完整技术解读|替代 2017 版,管道工程师必看

2025-10-31 发布、2026 年 5 月 1 日正式实施的 GB/T 12459-2025《钢制对焊管件 类型与参数》全面替代沿用 8 年的 GB/T 12459-2017,是石油化工、火电、长输燃气、核电、精细化工仪表管线的核心基础管件标准。 本次修订绝非简单文字修正,而是全维度技术…

📅 2026/10/5 12:34:08
Lottie、Rive 与 CustomPainter,要按交互路径选

Lottie、Rive 与 CustomPainter,要按交互路径选

Lottie、Rive 与 CustomPainter,要按交互路径选 Lottie、Rive 和 CustomPainter 解决的不是同一类问题。先问动画是否需要交互状态机、资源有多复杂、它出现在哪条用户路径,再看工具;功能清单只能初筛。 复杂矢量资源可能带来较高的解析、绘制…

📅 2026/10/6 22:34:54
从 /IWPGW/TASKPROCESSING 到 TaskCollection,彻底搞懂 SAP Task Gateway Service 的激活过程

从 /IWPGW/TASKPROCESSING 到 TaskCollection,彻底搞懂 SAP Task Gateway Service 的激活过程

在 SAP Fiori My Inbox 这类统一待办应用里,经常会遇到一种看起来有些反直觉的现象。后台的 SAP Business Workflow 明明已经产生了 Work Item,SWI1 里也能看到待审批任务,Agent 分配没有问题,用户权限看起来也正常,可是打开 My Inbox 后却没有任何任务。继续向下排查,才…

📅 2026/10/13 17:54:02
MORE NEWS

更多资讯

📰

1024 特刊|用稀疏自编码器拆开激活:重构得好,为什么仍不能直接叫“找到知识”

一个特征在“巴黎”“法国”等文本上亮起来,看上去很像地理知识节点。但解释性标签来自观察,因果作用需要干预,两者不能省略中间证据。 2024 年的 TopK SAE 研究讨论了如何直接控制稀疏度及评估特征质量;同年的 JumpReLU 论文提出…

📰

1024 特刊|机器人先想再动:把高层推理、坐标变换和闭环控制分开

“把杯子放进柜子”只是一句指令。机器人还需要知道杯子在哪个坐标系里、该抓哪里、柜门是否打开,以及接触后有没有滑脱。语言推理能提供子目标,却不能替代这些几何和反馈信息。 10 月 8 日提交的 ARC 机器人推理论文把推理轨迹与下一动作及其因果解释联…

📰

1024 特刊|从 A* 到 MCTS:过程奖励分数为什么不能直接当最短路启发函数

搜索器拿到一个分数,第一件事应该是问它在估计什么。A* 的剩余代价、MCTS 的回报估计、PRM 对一步推理的评分,虽然都能排队,却不是同一种量。 10 月 6 日,OpenAI 公开一批数学研究结果及部分 Lean 形式化。这一事件对搜索工程的启…

📰

LLM面试必问的8个核心问题:从Transformer到微调的深度解析

1. 为什么这8个问题成了LLM岗位的硬门槛面过LLM岗位的人大概都有这种体验:简历上写着“熟悉Transformer”“做过RAG项目”“微调过开源模型”,结果面试官第一个问题就把人问住了。不是问得多偏,而是问得太基础——基础到很多人以为自己会&…

📰

LLM面试8大核心问题:Transformer、Tokenization、Embedding与Function Calling底层原理

1. 为什么这8个问题成了LLM岗位的硬门槛面过LLM方向的人大概都有体会:面试官不太爱问“你用过哪些框架”这种能背答案的题,反而喜欢盯着几个看似基础、实则暗藏杀机的点反复追问。原因很简单——大模型这个领域,工具和API三个月换一茬&#x…

📰

生产级Agent内核设计:14个关键决策与四大复利引擎

1. 这不是“造轮子”,是重新校准Agent开发的认知坐标系我从2023年夏天开始写第一个能跑通的Agent,到今天手头维护着7个生产级Agent服务——有给制造业客户做的设备故障诊断助手,有嵌入ERP系统的采购决策支持模块,也有在内部知识库…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬