题解 | #奶牛的活动面积#
奶牛的活动面积
https://www.nowcoder.com/practice/666cb0dd46a2439fb7c44d24a9918bf7
题目考察的知识点是:
动态规划。
题目解答方法的文字分析:
我们考虑如果当前点不是左上两条边的点的话, 那么如果满足当前点上面连续的C的个数和左边的连续的C的个数均大于f[i-1][j-1], 那么f[i][j]就可以在f[i-1][j-1]的基础上+1。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param land char字符型二维数组 * @return int整型 */ public int maximalSquare (char[][] land) { // write code here int maxSide = 0; if (land.length == 0 || land[0].length == 0) { return maxSide; } int rows = land.length, cols = land[0].length; int[][] dp = new int[rows][cols]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (land[i][j] == 'C') { if (i == 0 || j == 0) { dp[i][j] = 1; } else { dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1; } maxSide = Math.max(maxSide, dp[i][j]); } } } return maxSide * maxSide; } }#题解#