Java DP Solution
\nclass Solution {\n    public int minimumWhiteTiles(String floor, int numCarpets, int carpetLen) {\n        int n = floor.length();\n        int[][] dp = new i
```\nclass Solution {\n    public int minimumWhiteTiles(String floor, int numCarpets, int carpetLen) {\n        int n = floor.length();\n        int[][] dp = new int[n + 1][numCarpets + 1];\n        for (int i = 1; i <= n; i++) {\n            for (int j = 0; j <= numCarpets; j++) {\n                if (floor.charAt(i - 1) == \'1\') dp[i][j] = dp[i - 1][j] + 1;\n                else dp[i][j] = dp[i - 1][j];\n                if (j > 0) dp[i][j] = Math.min(dp[i][j], dp[Math.max(0, i - carpetLen)][j - 1]);\n            }\n        }\n        return dp[n][numCarpets];\n    }\n}\n```
['Dynamic Programming', 'Java']