使用动态编程将自然数表示为平方和

使用动态编程将自然数表示为平方和,第1张

使用动态编程将自然数表示为平方和

我不确定DP是否是解决此问题的最有效方法,但是您要求使用DP。

min [i] = min(min [i-1] +1,1 + min [i-prev])其中prev是一个平方数 <i
这很接近,我将条件写为

min[i] = min(1 + min[i - prev]) for each square number 'prev <= i'

请注意,

i
您需要分别检查的不同可能值
prev

这是Java的简单实现。

Arrays.fill(min, Integer.MAX_VALUE);min[0] = 0;for (int i = 1; i <= n; ++i) {    for (int j = 1; j*j <= i; ++j) {        min[i] = Math.min(min[i], min[i - j*j] + 1);    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5031426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存