博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leecode279题——完全平方数
阅读量:2429 次
发布时间:2019-05-10

本文共 524 字,大约阅读时间需要 1 分钟。

题目

在这里插入图片描述

思路

在这里插入图片描述

通过上面的树形图,正整数n可以分为某个完全平方数加上另外一个正整数,比如:12=1+11,或者12=4+8,12=9+3,我们设组成一个正整数最少的完全平方数为num[i],那么组成12的完全平方数最少平方数num[12]=min(num[11],num[8],num[3])+1,这样就会产生很多的子问题

所以该题的动态规划方程为:

设组成正整数n的最少完全平方数的个数为dp[n],则dp[n]=min(dp[n-11],dp[n-22],dp[n-33],……dp[n-jj])+1,其中要保证n-j*j>=0,

代码如下:

class Solution {public:    int numSquares(int n) {       if(n<4) return n;       vector
dp(n+1); for(int i=1;i<=n;i++){ for(int j=1;i-j*j>=0;j++){ dp[i]=min(dp[i],dp[i-j*j]+1); } } return dp[n]; }};

转载地址:http://zljmb.baihongyu.com/

你可能感兴趣的文章
mysql5.7初始密码查看及密码重置
查看>>
go语言实现2048小游戏(完整代码)
查看>>
动态二维码免费制作
查看>>
C语言贪吃蛇
查看>>
Python练手项目
查看>>
知网毕业论文爬取
查看>>
Django无法显示图片
查看>>
MyBatis常见面试题和答案(2020最新版)
查看>>
AOP技术基础
查看>>
【Spring】HttpMessageConverter的作用及替换
查看>>
聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)
查看>>
Spring MVC 框架的请求处理流程及体系结构
查看>>
mybatis-generator-gui界面工具生成实体
查看>>
Github访问速度很慢的原因,以及解决方法
查看>>
数据库分区、分表、分库、分片
查看>>
数据库垂直拆分 水平拆分
查看>>
关系型数据库设计:三大范式的通俗理解
查看>>
Hibernate常见面试题
查看>>
史上最全的 struts2 面试题
查看>>
如何写一份优秀的java程序员简历
查看>>