LeetCode 837. 新21点

原题链接

思路动态规划问题,从后往前考虑。
在优化时间复杂度的时候,将前后两项相同的部分消去。
关于找状态转移方程的方法,一点感悟是:先定数组形式。一维数组找前后关系,二维数组找临近关系。

代码:

class Solution {
    
    
public:
    double new21Game(int N, int K, int W) {
    
    

        if(K == 0) return 1.0;
        vector<double> res(K + W);
        for(int i = K; i <= N; i++) res[i] = 1.0;

        res[K - 1] = 1.0 * min(N - K + 1,W) / W;
        for(int i = K - 2; i >=0; i--){
    
    
            res[i] = res[i + 1] - (res[i + W + 1] - res[i + 1]) / W;
        }
        return res[0];
    }
};

猜你喜欢

转载自blog.csdn.net/qq_43078427/article/details/114541220