找出完全平方。听说有个叫做什么四平方定理的,但是没有使用过。简单来说粗暴的方式就是通过遍历的几次循环将所有的最小方案都解决掉,然后直接输出
public int numSquares(int n) {
if (n <= 0) {
return 0;
}
int[] dp = new int[n + 1];
Arrays.fill(dp, Integer.MAX_VALUE);
//简单粗暴就是假如n=9,那么返回值直接就是1
for (int i = 0; i * i <= n; i++) {
dp[i * i] = 1;
}
//对于n范围内的所有数字都进行一遍最小的查找,同时也是为后面的数字求解提供很多的帮助。
for (int i = 0; i <= n; i++) {
//对当前数字的解决办法,只是会利用在之前求出的数字结果。
for (int j = 1; j * j <= i; j++) {
dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
}
}
return dp[n];
}
还有很多的dp解决方案,今天有点疲软,后面补上。