444 div1 easy

TLEしたので枝刈りしたら通った

# coding: utf-8
def unfold(grid, limit, i, j, n):
    if i - n + 1 < 0:
        return False
    if j + n > len(grid)-1:
        return False
    tri = 0
    for h in range(n):
        if grid[j+h][i+1] == '#':
            return False
        if grid[j+h][i-h] != '/':
            return False
        for w in range(h):
            if grid[j+h][i-w] == '/':
                tri += 1
                if tri > limit:
                    return False
            if grid[j+h][i-w] == '.':
                return False
    for w in range(n):
        if grid[j+n][i-w] == '#':
            return False
    return True

class UnfoldingTriangles:
    def solve(self, grid, unfoldLimit):
        y = len(grid)
        x = len(grid[0])
        g = [[c for c in s] for s in grid]
        g.append(['.' for i in range(x+1)])
        for i in range(y):
            g[i].append('.')
        ans = -1
        for j in range(y):
            for i in range(x):
                for k in range(min(x,y)):
                    k += 1
                    if k > ans and unfold(g, unfoldLimit, i, j, k):
                        ans = k
        if ans == -1:
            return -1
        return ans * (ans + 1) / 2