已解决
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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 【Shell 系列教程】shell介绍(一)
- 下一篇: VS工程的“多dll与exe文件合并”