Advertisement
sweet1cris

Untitled

Jan 9th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.26 KB | None | 0 0
  1. public class Solution {
  2.     /**
  3.      * @param A an integer matrix
  4.      * @return  an integer
  5.      */
  6.     int [][]dp;
  7.     int [][]flag ;
  8.     int n ,m;
  9.     public int longestIncreasingContinuousSubsequenceII(int[][] A) {
  10.         // Write your code here
  11.         if(A.length == 0)
  12.             return 0;
  13.         n = A.length;
  14.          m  = A[0].length;
  15.         int ans= 0;
  16.         dp = new int[n][m];
  17.         flag = new int[n][m];
  18.        
  19.         for(int i = 0; i < n; i++) {
  20.             for(int j = 0; j < m; j++) {
  21.                 dp[i][j] = search(i, j, A);
  22.                 ans = Math.max(ans, dp[i][j]);
  23.             }
  24.         }
  25.         return ans;
  26.     }
  27.     int []dx = {1,-1,0,0};
  28.     int []dy = {0,0,1,-1};
  29.    
  30.     int search(int x, int y, int[][] A)   {
  31.         if(flag[x][y] != 0)    
  32.             return dp[x][y];
  33.        
  34.         int ans = 1;
  35.         int nx , ny;
  36.         for(int i = 0; i < 4; i++) {
  37.             nx = x + dx[i];
  38.             ny = y + dy[i];
  39.             if(0<= nx && nx < n && 0<= ny && ny < m ) {
  40.                 if( A[x][y] > A[nx][ny]) {
  41.                     ans = Math.max(ans,  search( nx, ny, A) + 1);
  42.                 }
  43.             }
  44.         }
  45.         flag[x][y] = 1;
  46.         dp[x][y] = ans;
  47.         return ans;
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement