<s>[INST] class Solution {
public:
    int superEggDrop(int k, int n) {
        int dp[k + 1][n + 1] = {};
        for (int i = 1; i <= k; i++) {
            dp[i][1] = 1;
            dp[i][0] = 0;
        }
        for (int j = 1; j <= n; j++) {
            dp[1][j] = j;
            dp[0][j] = 0;
        }
        for (int i = 2; i <= k; i++) {
            int x = 1;
            for (int j = 2; j <= n; j++) {
                while (x < j && dp[i - 1][x - 1] + dp[i][j - x] > dp[i - 1][x] + dp[i][j - x - 1]) {
                    x++;
                }
                dp[i][j] = dp[i - 1][x - 1] + dp[i][j - x] + 1;
            }
        }
        for (int i = 1; i <= k; i++) {
            if (dp[i][n] <= n) {
                return dp[i][n];
            }
        }
        return dp[k][n];
    }
};
In this solution, why `int dp[k + 1][n + 1] = {};` can be compiled successfully?[/INST]