Day10力扣打卡

打卡记录

求一个整数的惩罚数(预处理+递归)

链接

cpp 复制代码
int PRE_SUM[1001];

int init = []() {
    for (int i = 1; i <= 1000; i++) {
        string s = to_string(i * i);
        int n = s.length();
        function<bool(int, int)> dfs = [&](int p, int sum) -> bool {
            if (p == n) { // 递归终点
                return sum == i; // i 符合要求
            }
            int x = 0;
            for (int j = p; j < n; j++) { // 枚举分割出从 s[p] 到 s[j] 的子串
                x = x * 10 + s[j] - '0'; // 子串对应的整数值
                if (dfs(j + 1, sum + x)) {
                    return true;
                }
            }
            return false;
        };
        PRE_SUM[i] = PRE_SUM[i - 1] + (dfs(0, 0) ? i * i : 0);
    }
    return 0;
}();

class Solution {
public:
    int punishmentNumber(int n) {
        return PRE_SUM[n];
    }
};
相关推荐
不吃元西9 分钟前
leetcode 74. 搜索二维矩阵
算法·leetcode·矩阵
杰杰批12 分钟前
第十四届蓝桥杯大赛软件赛国赛C/C++研究生组
c语言·c++·蓝桥杯
小开不是小可爱15 分钟前
leetcode_454. 四数相加 II_java
java·数据结构·算法·leetcode
aaaweiaaaaaa1 小时前
蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
Hesse1 小时前
希尔排序:Python语言实现
python·算法
FreeLikeTheWind.1 小时前
Qt 开发时可以在函数内引用的头文件
开发语言·c++·qt
说码解字1 小时前
C++ 的右值引用和移动语义
c++
h^hh2 小时前
pipe匿名管道实操(Linux)
数据结构·c++·算法
岁ovo寒2 小时前
【无标题】
c++
dr李四维2 小时前
解决缓存穿透的布隆过滤器与布谷鸟过滤器:谁更适合你的应用场景?
redis·算法·缓存·哈希算法·缓存穿透·布隆过滤器·布谷鸟过滤器