跳至主要内容

329. 矩阵中的最长递增路径

class Solution {
public:
   
    int longestIncreasingPath(vector<vector<int>> &matrix)
    {
        if (matrix.size() == 0)
            return 0;
       
        int xmax = matrix.size();
        int ymax = matrix[0].size();

        int ** tmp = new int*[xmax];

        for (int i = 0; i < xmax; i++)
        {
            tmp[i] = new int[ymax];
            for (int j = 0; j < ymax; j++)
            {
                tmp[i][j] = 0;
            }
        }

        int maxlen = 0;
        for (int i = 0; i < xmax; i++)
        {
            for (int j = 0; j < ymax; j++)
            {
                maxlen = max(maxlen, dp(matrix, i, j, tmp, xmax, ymax));
            }
        }

        return maxlen;
    }

    int dp(vector<vector<int>> &matrix, int i, int j, int ** tmp, int xmax, int ymax)
    {
        if (tmp[i][j] != 0)
        {
            return tmp[i][j];
        }

        int xdir[4] = { 1, 0, -1, 0 };
        int ydir[4] = { 0, 1, 0, -1 };

        tmp[i][j] = 1;

        for (int k = 0; k < 4; k++)
        {
            int x = i + xdir[k];
            int y = j + ydir[k];

            if (x >= 0 && x < xmax && y >= 0 && y < ymax && matrix[x][y]>matrix[i][j])
            {
                int maxlen = max(dp(matrix, x, y, tmp, xmax, ymax) + 1, tmp[i][j]);
                tmp[i][j] = maxlen;
            }
        }

        return tmp[i][j];
    }
};

评论

此博客中的热门博文

老毛子路由器无线桥接问题

  信道带宽:改成20M  关闭 DHCP 服务器  关闭动态 (DHCP) 路由 修改IP地址从192.168.123.1到192.168.1.114  无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择LAN bridge 连上上级wifi done 路由器自身可能上不去网,执行: route add default  gw 192.168.1.1 不过这种方式无法翻墙 ////////////////////////////////////////////////////////////// 第二种方式 不改信道不关闭DHCP,保持网段是192.168.123.1 无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择WAN 连上上级wifi done 路由器可以翻墙,但是192.168.1.1的机器访问不了192.168.123.1的机器 解决方法: 在192.168.123.1的机器把想要访问的机器比如192.168.123.100设置DMZ主机,这样就可以访问了,在 192.168.1.1能看到分配的ip比如192.168.1.115