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];
    }
};
相关推荐
qq_46630245几秒前
vs2022 与Qt版本兼容 带来的警告
c++·qt
dapeng28702 分钟前
C++与Docker集成开发
开发语言·c++·算法
2501_945423543 分钟前
C++中的策略模式实战
开发语言·c++·算法
2301_792308255 分钟前
C++与自动驾驶系统
开发语言·c++·算法
会编程的土豆6 分钟前
【数据结构与算法】LCS刷题
数据结构·算法·动态规划
无敌憨憨大王7 分钟前
最小生成树
算法
Jasmine_llq8 分钟前
《B4258 [GESP202503 一级] 四舍五入》
数据结构·算法·整数运算实现四舍五入整十数算法·批量输入遍历算法·逐行输出算法·整数算术运算组合算法·顺序输入处理算法
山上三树11 分钟前
C/C++ 中,整数 ↔ 字符、整数 ↔ 字符串
c语言·c++
2401_8747325311 分钟前
模板编译期排序算法
开发语言·c++·算法
阿Y加油吧11 分钟前
力扣打卡——螺旋矩阵、旋转图像
leetcode