题目描述
思路:首先考虑k与n*n的关系,考虑几种特殊情况。
1. 当k等于所有网格数时,需要把所有网格都涂成黑色,故只有一种方案;
2. 当k等于0时,表示不需要黑色格子,所以也应该是一种方案;
3. 当k小于n时,表示要求涂黑的个数,小于整行或者整列的网格数,故没有对应的方案;
接下里考虑常规情况,当k能够整除n时,说明任选x行或x列,或者x行加x列,能够得到k个黑色网格,如果不能够整除,则表示存在重叠网格的情况,即为行列交叉时,此时k与选择的行数列数之间存在一种关系,即k=(所选行数+所选列数) * n-所选行数 *所选列数,所选行数 *所选列数即为由于行列交叉所减少的网格个数。
以下为python代码
class Solution:
def paintingPlan(self, n: int, k: int) -> int