leetcode-Maximal Square-DP 중점

2287 단어 LeetCode
https://leetcode.com/problems/maximal-square/
DP에 대한 질문은 state equation이라고 쓰십시오. 여기서 state는 square length rather than the required area. 를 선택합니다.이것은 2D의 dp이기 때문에 dp[x][y]=?.
여기 dp[x][y]는 (x, y)를 오른쪽 하각점으로 하는 최대 square의 가장자리 길이를 나타낸다.
여기서 약간 다른 것은 일반적인 dp문제의 결과가 바로 dp상태수조의 마지막 값이라는 것이다.여기에서 구한 것은 사실 전체 dp상태 수조의 최대 값이다
해석 참조http://www.cnblogs.com/jcliBlogger/p/4548751.html http://bookshadow.com/weblog/2015/06/03/leetcode-maximal-square/
class Solution(object):
    def maximalSquare(self, matrix):
        """ :type matrix: List[List[str]] :rtype: int """
        if matrix == []:
            return 0
        m, n = len(matrix), len(matrix[0])
        dp = [[0] * n for x in range(m)]
        ans = 0
        for x in range(m):
            for y in range(n):
                if x == 0 or y == 0:
                    dp[x][y] = int(matrix[x][y])
                else:
                    if int(matrix[x][y]):
                        dp[x][y] = min(dp[x - 1][y - 1], dp[x][y - 1], dp[x - 1][y]) + 1
                ans = max(ans, dp[x][y])#      dp           
        return ans * ans

좋은 웹페이지 즐겨찾기