由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道最简单的题 把一个数拆成任意个平方和的最小拆法
相关主题
生物男的Google面经节略版2nd Amazon phone interview (1hr)
来贡献个facebook phone 题吧让人沮丧的Goog电话面试
扔鸡蛋的问题请教一道算法题目,请高手指点
请教怎么实现sqrt?问几个brain teaser
a CS question问一道brainteaser
brainteaser 求问general solution for missing number(s) problem
google 电面Google的这一道题的最优解?继续求助@!
老问题了,网上竟然找不到答案贡献BB二进宫的电面面经
相关话题的讨论汇总
话题: 拆法话题: 最小话题: 存进话题: 平方和话题: 拆成
进入JobHunting版参与讨论
1 (共1页)
f*********5
发帖数: 66
1
我的想法是贪心,每次找出最大的再减去,不过总感觉不对,请问正确的做法是?
b******m
发帖数: 382
2
这是算法题吗?
一个一个试吧。
先把所有比这个数小的平方数找出来,看看能不能写成2个的和。
不行,就看看能不能写成3个的。。。
手算的话应该没什么好办法。
r******y
发帖数: 21
3
这个有两种解法:
第一种是DP,先在O(sqrt(n))时间找出所有平方数因子,然后用coin change找出最少
组合。
第二种是深搜,也是先在O(sqrt(n))时间找出所有平方数因子,然后就暴力深搜,但是
深搜的最大深度是3,如果都搜不到就返回4. (拉格朗日平方数和定理)
f*********5
发帖数: 66
4

想法非常好!感谢

【在 r******y 的大作中提到】
: 这个有两种解法:
: 第一种是DP,先在O(sqrt(n))时间找出所有平方数因子,然后用coin change找出最少
: 组合。
: 第二种是深搜,也是先在O(sqrt(n))时间找出所有平方数因子,然后就暴力深搜,但是
: 深搜的最大深度是3,如果都搜不到就返回4. (拉格朗日平方数和定理)

T*****u
发帖数: 7103
5
dp
s*****m
发帖数: 8094
6

人要的是“最小拆法”,不是“4”

【在 r******y 的大作中提到】
: 这个有两种解法:
: 第一种是DP,先在O(sqrt(n))时间找出所有平方数因子,然后用coin change找出最少
: 组合。
: 第二种是深搜,也是先在O(sqrt(n))时间找出所有平方数因子,然后就暴力深搜,但是
: 深搜的最大深度是3,如果都搜不到就返回4. (拉格朗日平方数和定理)

s****a
发帖数: 794
7
最多只需要四个就行 所以你写个循环都好
w******n
发帖数: 61
8
背包dp吧。
j********2
发帖数: 414
9
请问 1 可以成为组成部分么? 如果不可以的话 应该有些情况没有解 如果可以有1 的
话贪心可以做吧
如果可以的话
我觉得 可以
while(n != 0) {
m = Math.sqrt(n);
result.add(m);
n = n - m * m;
}
假设 输入是n = 14
第一次存进的是3
n = 14 - 9 = 5
第二次存进是2
n = 5 - 4 = 1
第三次存进是1
n = 1 - 1 = 0
结果是3, 2, 1
假设 输入时n 是平方数 则结果就是开方
如果不能为1, 可参照2l大哥的解法,但是dp逻辑很复杂, dfs会非常慢
b******m
发帖数: 382
10
不是要求最小拆法吗?
要是48按你这算法就不是最小了。
楼上说的dp是啥?不懂呀。

【在 j********2 的大作中提到】
: 请问 1 可以成为组成部分么? 如果不可以的话 应该有些情况没有解 如果可以有1 的
: 话贪心可以做吧
: 如果可以的话
: 我觉得 可以
: while(n != 0) {
: m = Math.sqrt(n);
: result.add(m);
: n = n - m * m;
: }
: 假设 输入是n = 14

s*****m
发帖数: 8094
11

你真的是贝克汉姆啊!

【在 b******m 的大作中提到】
: 不是要求最小拆法吗?
: 要是48按你这算法就不是最小了。
: 楼上说的dp是啥?不懂呀。

1 (共1页)
进入JobHunting版参与讨论
相关主题
贡献BB二进宫的电面面经a CS question
bloomberg新鲜面经brainteaser 求问
这个题有什么好方法吗?google 电面
请教一个google的面试题老问题了,网上竟然找不到答案
生物男的Google面经节略版2nd Amazon phone interview (1hr)
来贡献个facebook phone 题吧让人沮丧的Goog电话面试
扔鸡蛋的问题请教一道算法题目,请高手指点
请教怎么实现sqrt?问几个brain teaser
相关话题的讨论汇总
话题: 拆法话题: 最小话题: 存进话题: 平方和话题: 拆成