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];
    }
};
相关推荐
丘山望岳10 小时前
剑起霜华——平衡二叉树(AVL树 )精讲
开发语言·数据结构·c++
西安邮电大学10 小时前
有关数组的经典算法题
java·后端·其他·算法·面试
学Linux的语莫11 小时前
大模型微调数据集格式详解:Alpaca、ShareGPT、DPO、KTO、预训练数据怎么构建?
人工智能·算法·机器学习·微调格式
wayz1111 小时前
Momentum:UO(终极震荡指标)技术指标详解
算法·金融·数据分析·量化交易·特征工程
Boom_Shu11 小时前
浅拷贝与深拷贝
开发语言·c++·算法
Mortalbreeze11 小时前
C++ Lambda表达式详解:从捕获列表到底层原理
开发语言·c++
为何创造硅基生物11 小时前
LVGL
c++·ui
只做人间不老仙11 小时前
C++ grpc 拦截器示例学习
开发语言·c++·学习
触底反弹11 小时前
一文彻底搞懂 JavaScript 栈和队列(建议收藏)
javascript·算法·面试
WL学习笔记11 小时前
通讯录(顺序表实现)
c语言·数据结构·算法