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

完全平方数(二)

解决方案

方法一:暴力枚举法 [超出时间限制]

这个问题要求我们找出由完全平方数组合成给定数字的最小个数。我们将问题重新表述成:

给定一个完全平方数列表和正整数 n,求出完全平方数组合成 n 的组合,要求组合中的解拥有完全平方数的最小个数。

注:可以重复使用列表中的完全平方数。

从上面对这个问题的叙述来看,它似乎是一个组合问题,对于这个问题,一个直观的解决方案是使用暴力枚举法,我们枚举所有可能的组合,并找到完全平方数的个数最小的一个。

我们可以用下面的公式来表述这个问题:

从上面的公式中,我们可以将其转换为递归解决方案。这里有一个例子。

算法

Python 实现

class Solution(object):def numSquares(self, n):square_nums = [i**2 for i in range(1, int(math.sqrt(n))+1)]def minNumSquares(k):""" recursive solution """# bottom cases: find a square numberif k in square_nums:return 1min_num = float('inf')# Find the minimal value among all possible solutionsfor square in square_nums:if k < square:breaknew_num = minNumSquares(k-square) + 1min_num = min(min_num, new_num)return min_numreturn minNumSquares(n)

上面的解决方案可以适用于较小的正整数 n。然而,会发现对于中等大小的数字(例如 55),我们也会很快遇到超出时间限制的问题。

简单的说,可能会由于过度递归,产生堆栈溢出。

http://www.dtcms.com/a/615713.html

相关文章:

  • 网站软文标题wordpress 配置邮箱
  • 阿尔及利亚网站后缀建设工程价款结算暂行办法
  • 前端做网站如何调接口开发公司工程部管理制度
  • 在哪个网站做视频可以赚钱北京人才招聘网站
  • 唐山中小企业网站制作长沙电商运营培训
  • 领地网怎么编辑个人网站php制作公司网站首页
  • ui设计的网站做暧暖ox免费视频网站
  • 90设计网站终身会员文化市场经营主体
  • 网站建设教程学校品牌设计公司排行榜
  • 做公司网站的资料怎么做根优酷差不多的网站
  • 网站建站 宝郑州那个公司做网站好
  • 平台网站建设有哪些方面工业产品设计工资
  • 如何用微信打开微网站牙科 网站建设方案
  • 网站免费正能量直接进入网上备案查询
  • 广州市广园路建设公司网站2017wordpress整站源码
  • 网站建设条例免费微信网站模板下载工具
  • 医院BA楼宇自控系统软硬件一体化
  • 谷歌怎么做公司网站外语人才网官网
  • 上海做网站的公司秦皇岛网站建设
  • 汇编语言编译器 | 高效开发汇编程序的工具与技巧
  • 北京网站建站公百度成都分公司
  • 网站开发(定制)合同 模板谷歌浏览器下载安卓版
  • 最好用的网站推广经验莱芜网站建设费用
  • nvm | node | 同时开多个项目,用 nvm use 切换不同 node 版本
  • 中国建设银行黄冈分行网站金属材料东莞网站建设
  • 建设pc端网站是什么意思wordpress添加熊掌号
  • 商业网站开发设计报告本土广告公司
  • 青海省公路工程建设信息网站做网站怎么插音乐
  • 中国建设银行山东省分行网站本地服务网站开发
  • 触控芯片核心:DRV与SENS信号解析