当前位置: 首页 > news >正文

动态规划完全背包系列一>完全平方数

目录

  • 题目转化:
  • 状态表示:
  • 状态转移方程:
  • 初始化:
  • 填表顺序:
  • 返回值:
  • 代码呈现:
  • 空间优化版本:

题目转化:

这里是引用

状态表示:

这里是引用

状态转移方程:

这里是引用

初始化:

这里是引用

填表顺序:

这里是引用

返回值:

这里是引用

代码呈现:

class Solution {

    public int numSquares(int n) {
        int aim = (int)Math.sqrt(n);
        int[][] dp = new int[aim+1][n+1];

        int INF = 0x3f3f3f3f;
        //初始化
        for(int i = 1; i <= n; i++) dp[0][i] = INF;
        
        for(int i = 1; i <= aim; i++)
            for(int j = 0; j <= n; j++){
                dp[i][j] = dp[i-1][j];
                if(j >= i*i)
                    dp[i][j] = Math.min(dp[i][j], dp[i][j-i*i]+1);
            }

        return dp[aim][n];    
    }
}

空间优化版本:

int aim = (int)Math.sqrt(n);
        int[] dp = new int[n+1];

        int INF = 0x3f3f3f3f;
        //初始化
        for(int i = 1; i <= n; i++) dp[i] = INF;
        
        for(int i = 1; i <= aim; i++)
            for(int j = i*i; j <= n; j++){
                dp[j] = Math.min(dp[j], dp[j-i*i] + 1);
            }

        return dp[n];

相关文章:

  • android......
  • Python学习笔记(4)
  • MySQL 锁机制详解
  • Scikit-learn模型构建全流程解析:从数据预处理到超参数调优
  • WebLogic中间件漏洞攻略
  • 六十天前端强化训练之第二十八天之Composition 函数完全指南
  • 串口通信与Modbus通信的区别和联系
  • 2025高频面试算法总结篇【链表堆栈队列】
  • priority_queue的模拟实现
  • 如何使用logminer
  • 剑指小米特斯拉:秦L EV上市11.98万起
  • BP神经网络+NSGAII算法(保真)
  • 【F#入门】第四讲 函数,管道与组合
  • dnf命令详解
  • hackmyvm-lookup
  • Linux中查找标准库函数的定义
  • MongoDB未授权访问漏洞
  • 个人博客系统 --- 测试报告
  • 【js逆向】某酒店模拟登录
  • 【蓝桥杯】真题 2386染色时间 (优先队列BFS)
  • 长三角铁路今日预计发送418万人次,持续迎来出行客流高峰
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 当老年人加入“行为艺术基础班”
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布
  • 一位排球青训教练的20年时光:努力提高女排球员成才率
  • 圆桌|特朗普上台百日未能结束俄乌冲突,若美国“退出”会发生什么?