DeepSeek    LeetCode 3971. 最大总价值 C语言实现
根据您提供的函数签名这对应的是LeetCode 3791「给定范围内平衡整数的数目」而非 3971。平衡整数定义为奇数位数字之和等于偶数位数字之和。核心解法是数位 DP用前缀和思想将区间 [low, high] 转化为 count(high) - count(low - 1)。下面是 C 语言实现c#include string.h#include stdlib.h// 记忆化数组dp[pos][diff][tight][started]// 由于 diff 范围 [-9*18, 9*18]加上偏移量 OFFSET 转为非负索引#define MAX_POS 20#define MAX_DIFF 200long long memo[MAX_POS][MAX_DIFF][2][2];char digits[MAX_POS];int len;long long dfs(int pos, int diff, int tight, int started) {if (pos len) {return (started diff 0) ? 1 : 0; // 必须已经开始且差值为0[reference:4]}if (memo[pos][diff 100][tight][started] ! -1) {return memo[pos][diff 100][tight][started];}long long res 0;int limit tight ? (digits[pos] - 0) : 9;// 情况1还没开始跳过当前位前导零if (!started) {res dfs(pos 1, diff, 0, 0); // tight 变为 false[reference:5]}// 情况2枚举当前位可填数字int start_digit started ? 0 : 1; // 未开始则不能填0[reference:6]for (int d start_digit; d limit; d) {int new_diff diff ((pos % 2 0) ? d : -d); // 奇数位加偶数位减[reference:7]int next_tight tight (d limit);res dfs(pos 1, new_diff, next_tight, 1);}memo[pos][diff 100][tight][started] res;return res;}long long count_upto(long long n) {if (n 10) return 0; // 平衡数至少需要两位数[reference:8]sprintf(digits, %lld, n);len strlen(digits);// 初始化记忆化数组for (int i 0; i MAX_POS; i) {for (int j 0; j MAX_DIFF; j) {for (int t 0; t 2; t) {for (int s 0; s 2; s) {memo[i][j][t][s] -1;}}}}return dfs(0, 0, 1, 0); // 从最高位开始初始受限未开始[reference:9]}long long countBalanced(long long low, long long high) {return count_upto(high) - count_upto(low - 1); // 前缀和相减[reference:10]}核心逻辑说明· 数位 DP 状态dfs(pos, diff, tight, started) 表示处理到第 pos 位当前奇数位和减偶数位和为 difftight 表示是否贴着上界started 表示是否已开始填数字。· 前导零处理started0 时可以选择跳过当前位或者从 1 开始填数字避免将前导零误判为偶数位。· 奇偶判断pos%20 视为奇数位从0开始索引加 d否则为偶数位减 d。· 区间转换用 count_upto(high) - count_upto(low-1) 计算 [low, high] 内的平衡数个数。

相关新闻

如何5分钟拯救B站缓存视频?m4s-converter终极指南

如何5分钟拯救B站缓存视频?m4s-converter终极指南

如何5分钟拯救B站缓存视频?m4s-converter终极指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一款专为B站用户设…

2026/11/2 5:53:22 阅读更多 →
5分钟掌握Python网站离线下载:永久保存任何网站内容的终极指南

5分钟掌握Python网站离线下载:永久保存任何网站内容的终极指南

5分钟掌握Python网站离线下载:永久保存任何网站内容的终极指南 【免费下载链接】WebSite-Downloader A website downloader written with Python 项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader 你是否曾经遇到过精心收藏的在线教程突然消…

2026/10/31 8:21:39 阅读更多 →
Python机器学习:从基础到工业级实践

Python机器学习:从基础到工业级实践

## 1. 项目概述"Python机器学习:筑基与实践"这个标题精准概括了现代数据科学领域最核心的技能组合。作为从业十年的技术人,我见证过太多初学者在机器学习入门阶段踩的坑——要么沉迷理论推导却写不出可运行的代码,要么盲目调用skle…

2026/10/28 6:12:53 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻