1、工行提前批笔试
一个数如果可表示成若干个完全平方数(1,4,9,16,25……)之和,如果有多种组合,给出元素最少的组合
如果不可以,输出NA
注意:
(1)默认的条件应该是组成元素不重复,不然任何一个数都可以由n个1的平方组成
2、leetcode279
求的是符合条件组合的元素个数,且允许元素重复
四平方定理
四平方定理说任何一个正整数都可以表示成不超过四个整数的平方之和。(允许元素重复使用)
或者说任何一个正整数都可以表示成四个整数的平方之和(不足四个用0填充)。
解题:
2、leetcode279 求组合的元素个数(元素可重复使用)
思路一:动态规划
// https://blog.csdn.net/zw159357/article/details/82595031 class Solution { public int numSquares(int n) { int [] dp=new int[n+1]; Arrays.fill(dp,1000000); dp[0]=0; for(int i=1;i<=n;i++){ for(int j =1;i-j*j>=0;j++){ // 注意j的范围 i-j*j>=0 dp[i]=Math.min(dp[i],dp[i-j*j]+1); // 状态方程 } } return dp[n]; } }