数学
方法一数学
由题意可知,如果我们涂了row行,colum列,那么涂黑的格子数就是 (row + colum) * n - (row * colum),这个题就转换成了,n行中找到row行,n列中找到colum列的可能种类。转换成排列组合其实就是
根据排列组合的知识
参考代码
class Solution:def paintingPlan(self, n: int, k: int) -> int:if k == n * n:return 1if k > n * n:return 0muls = [1]mul = 1for i in range(1,7):mul = i * mulmuls.append(mul)ans = 0for row in range(0,n):for colum in range(0,n):grid = (row + colum) * n - (row * colum)if grid == k:ans += muls[n] // (muls[n-row] * muls[row]) * muls[n] // (muls[colum] * muls[n - colum])return ans
复杂度分析
数件复杂度O(n^2)
空间复杂度O(n)
