中级农民
- 积分
- 155
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-4-17
- 最后登录
- 1970-1-1
|
写了下第一题的代码,欢迎指教
- public class SquaresNumber {
- public static void main(String[] args) {
- int[][] matrix = {{0, 1, 1},
- {1, 1, 1},
- {1, 1, 1}};
- getSquaresNumber(matrix);
- }
- public static int getSquaresNumber(int[][] matrix) {
- if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
- return 0;
- }
- int m = matrix.length;
- int n = matrix[0].length;
- int[][] dp = new int[m][n];
- for (int i = 0; i < m; i++) {
- if (matrix[i][0] == 1) {
- dp[i][0] = 1;
- }
- }
- for (int i = 0; i < n; i++) {
- if (matrix[0][i] == 1) {
- dp[0][i] = 1;
- }
- }
- for (int i = 1; i < m; i++) {
- for (int j = 1; j < n; j++) {
- if (matrix[i][j] == 1) {
- dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;
- } else {
- dp[i][j] = 0;
- }
- }
- }
- int res = 0;
- for (int[] arr : dp) {
- for (int i : arr) {
- res += i;
- }
- }
- System.out.println(res);
- return res;
- }
- }
复制代码 |
|