Champagne Tower
Medium
Watch on YouTube ↗Solution
class Solution {
public double champagneTower(int poured, int rows, int glass) {
double dp[][] = new double[101][101];
dp[0][0] = poured;
// O(rows*rows)
for(int i=0; i<=rows; i++) {
for(int j=0; j<=i; j++ ) {
double extra = (dp[i][j]-1)/2.0;
if(extra > 0) {
dp[i+1][j] += extra;
dp[i+1][j+1] += extra;
}
}
}
// dp[rows][glass] > 1,
return Math.min(1, dp[rows][glass]);
}
}
/*
0
0 1
0 1 2
0 1 2 3
*/