2209. 用地毯覆盖后的最少白色砖块
题目链接:2209. 用地毯覆盖后的最少白色砖块
代码如下:
class Solution {
public:
int minimumWhiteTiles(string floor, int numCarpets, int carpetLen) {
vector<vector<int>>memo (numCarpets + 1, vector<int>(floor.size(), -1));//-1表示没有计算过
auto dfs = [&](auto&& dfs, int i, int j)->int {
if (j < carpetLen * i) {//剩余砖块全部可以覆盖
return 0;
}
int& res = memo[i][j];
if (res != -1) {
return res;
}
if (i == 0) {
return res = dfs(dfs, i, j - 1) + (floor[j] - '0');
}
return res = min(dfs(dfs, i, j - 1) + (floor[j] - '0'), dfs(dfs, i - 1, j - carpetLen));
};
return dfs(dfs,numCarpets, floor.size() - 1);
}
};