吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1511|回复: 1
收起左侧

[其他转载] 算法题-完全平方数 动态规划解法

[复制链接]
dingallen216 发表于 2020-12-16 20:50
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
示例 1:
输入: n = 12
输出: 3
解释: 12 = 4 + 4 + 4.
示例 2:
输入: n = 13
输出: 2
解释: 13 = 4 + 9.



刷leetcode做到这道题的时候,第一反应是使用动态规划,写出来之后发现效率不佳,以为是哪里没有处理好,后来粘贴了几位大佬的dp算法,发现效率也不佳,才发现动态规划不是这道题最优解,但观感上我的代码还挺优雅,故来水个帖。

[C++] 纯文本查看 复制代码
class Solution {
public:
    int numSquares(int n) {

        vector<int> dp(n + 1, n);

        for (int i = 1; i * i <= n; i++) dp[i * i] = 1;

        for (int i = 2; i <= n; i++) {

            if (dp[i] == 1) continue;

            for (int j = 1; j * j < i; j++) {
                dp[i] = min(dp[i], dp[i - j * j] + dp[j * j]);
            }
        }

        return dp[n];
    }
};

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
1369452145 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shujia2112 发表于 2020-12-17 00:25
循环套循环直接导致性能严重下降
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表