当前位置: 首页 > news >正文

数位dp.

 

 

lc2376

数位DFS+记忆化搜索,计算从1到n的所有正整数中,没有重复数字的数的总个数

 class Solution {
public:
    int countSpecialNumbers(int n) {
        string s = to_string(n);
        int m = s.length();
        vector<vector<int>> memo(m, vector<int>(1 << 10, -1)); // -1 表示没有计算过


        auto dfs = [&](auto&& dfs, 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 = dfs(dfs, i + 1, mask, false, false);
            }
            // 如果前面填的数字都和 n 的一样,那么这一位至多填数字 s[i](否则就超过 n 啦)
            int up = is_limit ? s[i] - '0' : 9;
            // 枚举要填入的数字 d
            // 如果前面没有填数字,则必须从 1 开始(因为不能有前导零)
            for (int d = is_num ? 0 : 1; d <= up; d++) {
                if ((mask >> d & 1) == 0) { // d 不在 mask 中,说明之前没有填过 d
                    res += dfs(dfs, i + 1, mask | (1 << d), is_limit && d == up, true);
                }
            }
            if (!is_limit && is_num) 
                memo[i][mask] = res; // 记忆化
            
            return res;
        };
        return dfs(dfs, 0, 0, true, false);
    }
};

 

http://www.dtcms.com/a/487108.html

相关文章:

  • 【LLIE技术专题】基于光照感知伽马校正与完整图像建模网络的低光图像增强(IAGC)方案
  • Python中的时区转换与处理
  • FTP主动连接和被动连接
  • 【微服务】SpringBoot 整合 FastExcel 实现导入导出操作详解
  • 高端做网站多少钱搜索引擎优化基本
  • 去国外做外卖网站好房子如何上网站做民宿
  • 做电商设计在哪个网站接单做网站中的剪辑图片
  • 从 0 到 1 理解前端工程化:图表化解析核心逻辑
  • 集团型空调厂产能优化:跨厂区压缩机调配与组装线负荷平衡逻辑
  • 可以带锚文本的网站网站开发对算法有要求么
  • 鸿蒙Harmony实战开发教学(No.1)-IDE新版本安装篇
  • 开发 iOS 应用全流程指南,环境搭建、证书配置与跨平台使用 开心上架 上架AppStore
  • 南宁网站推广经理中国外包加工网
  • lesson72:Node.js 安全实战:Crypto-Js 4.2.0 与 Express 加密体系构建指南
  • 03 Eclipse 配置 JDK 环境
  • 移动终端安全:实验3-Drozer关键模块的使用
  • wordpress批量添加tag重庆网站优化服务
  • 数字化转型下,各类实验室软件如何构建高效合规的智能生态?
  • 网站建设纟金手指下拉壹陆英文网站的建设
  • Linux服务器编程实践26-TCP连接超时重连机制:超时时间计算与重连策略
  • 宁波建站平台网站突然打不开
  • 深圳哪家网站建设网页开发需求定制
  • h5游戏免费下载:避开红点
  • 在actix-web中创建一个提取器
  • 一个CTO的一天:Indie Team Kickoff
  • C++ 链表技巧
  • 贪心:Stall Reservations S(重写)
  • 商城网站有免费建设的吗网站开发的主要内容
  • 泉州企业网站设计招商网站建设网
  • 数据库主从同步原理等信息