题目链接
题目很巧妙, instead of keeping track of how much chanpagne in each glass, keep track of the amount of champagne flow through each glass.
class Solution {
public double champagneTower(int poured, int query_row, int query_glass) {
// 0 - 100, 外加一层地上
double[][] flow = new double[102][102];
flow[0][0] = (double) poured;
for (int i = 0; i <= query_row; i++){
for (int j = 0; j <= i; j++){
double q = (flow[i][j] - 1) / 2;
if (q > 0){
flow[i+1][j] += q;
flow[i+1][j+1] += q;
}
}
}
return Math.min(1, flow[query_row][query_glass]);
}
}