当前位置:首页 > 编程笔记 > 正文
已解决

2698 求一个整数的惩罚数 (子集和,DFS)

来自网友在路上 183883提问 提问时间:2023-10-28 22:45:17阅读次数: 83

最佳答案 问答题库838位专家为你答疑解惑

在这里插入图片描述

class Solution {
public:bool dfs(int target, string s, int index, int sum) {// 只有整个字符串都被分割,求和,和看结果是不是等于targetif(index == s.size()) {return sum == target;}int num = 0; // 在现在的子集中去依次加入余下的元素// 1 2 9 6// 1 2 96// 1 296// 1296// 12 9 6// 12 96// 1296// 129 6// 1296// 大概就是这个意思for(int i = index; i < s.size(); i ++) {num = num * 10 + (s[i] - '0');if(num + sum > target) return false;// 如果现在这个划分可以的话,就表示,i * i是一个惩罚数(只用获得一种拆分就可以了)if(dfs(target, s, i + 1, sum + num)) {return true;} }return false;}int punishmentNumber(int n) {int ans = 0;for(int i = 1; i <= n; i ++) {string temp = to_string(i * i);if(dfs(i, temp, 0, 0)) {ans += i * i;}}return ans;}
};
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"2698 求一个整数的惩罚数 (子集和,DFS)":http://eshow365.cn/6-27153-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!