思路
将要组成的整数n看成长度为n的木板, 完全平方数x2 看成长度为x2的木板。
问题转化成:将一个长度n的木板分割成最少的部分,要求每个部分的长度恰好是完全平方数。

如果一个整数可以表示为某个整数与自身相乘的积,就称它为完全平方数。例如,1=1×1、4=2×2、9=3×3、16=4×4,这些数都是完全平方数;而 5 和 12 不是。
给定一个整数 n,请计算至少需要多少个完全平方数相加才能得到 n。
约束条件
整数 n 满足 1≤n≤104。
输入包含一个参数:一个整数 n,表示需要用完全平方数凑出的目标整数。
返回一个整数,表示凑出 n 所需的最少完全平方数个数。
输入
1
输出
1
说明
1 本身是完全平方数,因为 1=12,所以最少需要 1 个完全平方数。
输入
41
输出
2
说明
41=25+16=52+42,最少需要 2 个完全平方数。
输入
43
输出
3
说明
一种最优拆分是 43=25+9+9=52+32+32,因此最少需要 3 个完全平方数。
输入
10000
输出
1
说明
10000 可以写成 1002,本身是完全平方数,所以最少需要 1 个完全平方数。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册