模拟,除了首尾两个杯子只接受上一层杯子溢出的一半,其余杯子接受的为上一层两个杯子各自溢出的一半之和。
class Solution {
public:
double champagneTower(int poured, int query_row, int query_glass) {
double dp[110][110];
memset(dp,0,sizeof dp);
dp[0][0]=poured;
for(int i=0;i<=query_row;i++){
for(int j=0;j<=i;j++){
if(dp[i][j]>=1){
double rem=dp[i][j]-1;
dp[i][j]=1;
dp[i+1][j]+=rem/2;
dp[i+1][j+1]+=rem/2;
}
}
}
return dp[query_row][query_glass];
}
};
时间复杂度:O(query_row^2)
空间复杂度:O(query_row^2)
本文介绍了一种模拟香槟倒入多层酒杯过程的算法。该算法使用动态规划方法,考虑了每层酒杯中香槟溢出的情况,并计算特定位置酒杯中香槟的量。实现采用二维数组进行状态转移。
1274

被折叠的 条评论
为什么被折叠?



