码迷,mamicode.com
首页 > 其他好文 > 详细

[LintCode] Longest Increasing Continuous subsequence II

时间:2015-06-18 19:21:53      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

Give you an integer matrix (with row size n, column size m),find the longest increasing continuous subsequence in this matrix. (The definition of the longest increasing continuous subsequence here can start at any row or column and go up/down/right/left any direction).

Example

Given a matrix:

[
  [1 ,2 ,3 ,4 ,5],
  [16,17,24,23,6],
  [15,18,25,22,7],
  [14,19,20,21,8],
  [13,12,11,10,9]
]

return 25

Challenge

O(nm) time and memory.

 

备忘录,dp[i][j] = max{dp[i-1][j], dp[i][j-1], dp[i+1][j], dp[i][j+1]} + 1。

 1 class Solution {
 2 public:
 3     /**
 4      * @param A an integer matrix
 5      * @return  an integer
 6      */
 7     bool isValid(vector<vector<int>> &A, int x, int y) {
 8         return x >= 0 && x < A.size() && y >= 0 && y < A[0].size();
 9     }
10     int dfs(vector<vector<int>> &A, vector<vector<int>> &dp, int x, int y) {
11         if (dp[x][y] != -1) return dp[x][y];
12         const int dx[4] = {0, 1, 0, -1};
13         const int dy[4] = {1, 0, -1, 0};
14         int tmp = 1;
15         for (int i = 0; i < 4; ++i) {
16             int xx = x + dx[i], yy = y + dy[i];
17             if (isValid(A, xx, yy) && A[x][y] > A[xx][yy]) tmp = max(tmp, dfs(A, dp, xx, yy) + 1);
18         }
19         dp[x][y] = tmp;
20         return dp[x][y];
21     }
22     int longestIncreasingContinuousSubsequenceII(vector<vector<int>>& A) {
23         // Write your code here
24         if (A.empty() || A[0].empty()) return 0;
25         int res = 0;
26         vector<vector<int>> dp(A.size(), vector<int>(A[0].size(), -1));
27         for (int i = 0; i < A.size(); ++i) {
28             for (int j = 0; j < A[0].size(); ++j) {
29                 res = max(res, dfs(A, dp, i, j));
30             }
31         }
32         return res;
33     }
34 };

 

[LintCode] Longest Increasing Continuous subsequence II

标签:

原文地址:http://www.cnblogs.com/easonliu/p/4586518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!