Champagne Tower
MediumDynamic Programming
Solution
export function champagneTower(poured: number, query_row: number, query_glass: number): number {
const dp = new Array(query_row + 1).fill(undefined).map((_, i) => new Array(i + 1).fill(0));
dp[0][0] = poured;
for (let row = 0; row < query_row; row++) {
for (let col = 0; col <= row; col++) {
const remain = dp[row][col] - 1;
if (0 < remain) {
dp[row][col] = 1;
dp[row + 1][col] += remain / 2;
dp[row + 1][col + 1] += remain / 2;
}
}
}
return Math.min(dp[query_row][query_glass], 1);
}