Leetcode 664. 奇怪的打印机(DAY 66 ) ---- 动态规划学习期(开始C++刷题了 但是莫名其妙AC 我连原理都不懂)

原题题目

在这里插入图片描述


代码实现(首刷小部分看解大部分猜解)

class Solution {
    
    
public:
    int strangePrinter(string s) {
    
    
        int n = s.size();
        if(s.empty())   return 0;
        vector<vector<int>> dp(n,vector<int>(n,10000));
        for(int i=0;i<n;i++)  dp[i][i] = 1;
        for(int end=1;end<n;end++)
        {
    
    
            for(int start=end-1;start>=0;start--)
            {
    
    
                for(int gap=end;gap>start;gap--)
                    dp[start][end] = fmin(dp[start][end],dp[start][gap-1]+dp[gap][end]);
                if(s[start] == s[end])  dp[start][end] -=1; 
            }
        }
        return dp[0][n-1];
    }
};

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/115065689