LCP 19.秋叶收藏集动态规划

    科技2022-08-18  103

    国庆回来开始做题

    动态规划,这个10月要每日一题动态规划吗?上个月做了好多回溯,收获满满希望这个月可以好好练习动规。

    f[i][0]开始i是红色 f[i][0] = f[i-1][0] + isyellow;上一个是红色,当前是黄色需要修改+1

    f[i][1]中间i是黄色 f[i][1] = min(f[i-1][0],f[i-1][1]) + isred;i是黄色上一个是红色或者黄色,当前是红色+1

    f[i][2]最后i是红色,每种颜色必须要有一个则必须大于2

    return f[leaves.size() - 1][2];  就是当j = 2的时候前面需要做些什么操作

    class Solution { public: int minimumOperations(string leaves) { int n = leaves.size(); vector<vector<int>>f(n,vector<int>(3)); f[0][0] = (leaves[0] == 'y');//f[0][0]第一个是红色 0 f[0][1] = f[0][2] = f[1][2] = INT_MAX; for(int i = 1; i < leaves.size(); i++) { int isyellow = (leaves[i] == 'y'); int isred = (leaves[i] == 'r'); f[i][0] = f[i-1][0] + isyellow; f[i][1] = min(f[i-1][0],f[i-1][1]) + isred; if(i >= 2) { f[i][2] = min(f[i-1][1],f[i-1][2]) + isyellow; } } return f[leaves.size() - 1][2]; } };

     

    Processed: 0.009, SQL: 9