(待整理)
题目描述:
class Solution { public: int minCut(string s) { int Len = s.length(); int dp[Len][Len]; for(int i=0;i<Len;i++) { for(int j=0;j<Len;j++) dp[i][j] = INT_MAX; } for(int i=0;i<Len;i++) dp[i][i] = 0; for(int l = 2;l<=Len;l++) { for(int i = 0;i+l-1<Len;i++) { int j = i+l-1; if(s[i] == s[j]) { if(l == 2 || dp[i+1][j-1] == 0) { // cout <<i <<" " << j <<endl; dp[i][j] = 0; continue; } } for(int k = i;k<j;k++) { dp[i][j] = min(dp[i][j],dp[i][k]+dp[k+1][j]+1); } } } return dp[0][Len-1]; } };
原文:https://www.cnblogs.com/z1141000271/p/12461186.html