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];
    }
};
相关推荐
mit6.824几秒前
中位数贪心|前缀和_距离和ret=l+r_1
算法
一匹电信狗1 分钟前
【LeetCode】栈和队列进阶题目
c++·算法·leetcode·职场和发展·stl·栈和队列
Bin二叉2 分钟前
南京大学cpp复习——第二部分(继承)
开发语言·c++·笔记·学习
机器学习之心3 分钟前
198种组合算法+优化TCN时间卷积神经网络+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!
深度学习·算法·shap分析·tcn时间卷积神经网络
代码游侠4 分钟前
数据结构——线性表
linux·c语言·数据结构·学习·算法
吃着火锅x唱着歌6 分钟前
LeetCode 3371.识别数组中的最大异常值
数据结构·算法·leetcode
元亓亓亓8 分钟前
LeetCode热题100--74. 搜索二维矩阵--中等
算法·leetcode·矩阵
lingggggaaaa19 分钟前
免杀对抗——C2远控篇&PowerShell&C#&对抗AV-EDR&停用AMSI接口&阻断ETW跟踪&调用
c语言·开发语言·c++·学习·安全·c#·免杀对抗
zzzsde20 分钟前
【C++】异常:概念及使用
开发语言·c++·算法
繁星星繁20 分钟前
CMake快速上手
c语言·c++·编辑器·学习方法·visual studio code