https://leetcode.com/problems/flip-string-to-monotone-increasing/
//dp[i][0] str[0:i-1] 最后字符为 0 时,最少 换字符数。
//dp[i][1] str[0:i-1] 最后字符为 1 时,最少 换字符数。
class Solution {
public:
int minFlipsMonoIncr(string S) {
int len = S.length();
int dp[len+1][2];
dp[0][0]=dp[0][1]=0;
for(int i=1; i<=len; i++){
if(S[i-1]=='0'){ //对应的是dp[i]
dp[i][0] = dp[i-1][0]; //最后为00
dp[i][1] = dp[i-1][1]+1; //最后为10
}
else{
dp[i][0] = dp[i-1][0]+1; //01 后面有可能有0 010
dp[i][1] = min(dp[i-1][1], dp[i-1][0]); //11 01 中取最小
}
}
return min(dp[len][0], dp[len][1]);
}
};