首页 > 试题广场 >

最短描述数,10的最短描述数是3^2+1^2所以是2,求一个

[问答题]

最短描述数,10的最短描述数是3^2+1^2所以是2,求一个数的最短描述数

# 平方个描述次数
# 5=2^2+1^2
# 3=1^2+1^2+1^2
def pingfanghe_miaoshu(s):
    f = [i for i in range(s+1)]
    for i in range(s):
        j = 1
        while j*j <= i:
            f[i] = min(f[i], f[i-j*j]+1)
            j += 1
    return f

num = raw_input()
res = pingfanghe_miaoshu(int(num)+1)
print(res[-2])

发表于 2019-07-21 14:25:46 回复(0)

(动态规划)

  • 表示通过平方数组成所需要的最少数量。

  • ,,其中

  • 即为最终答案。

    class Solution {
    public:
      int numSquares(int n) {
          vector<int> f(n + 1, n);
          f[0] = 0;
          for (int i = 1; i <= n; i++)
              for (int j = 1; j * j <= i; j++)
                  f[i] = min(f[i], f[i - j * j] + 1);
    
          return f[n];
      }
    };
发表于 2019-06-02 20:02:41 回复(0)