题意:给你两个字符串s1,s2。让你通过给s1涂色,使s1变成s2。涂色的方式只能每次给一个区间图一种颜色。
只考虑s1和s2不存在相同的字母的情况:
dp[i][j]表示区间(i,j)涂色的次数。
dp[i][j]=min(dp[i+1][j]+1,dp[i+1][k]+dp[k+1][j]);
有几种方法:
1.单独给i涂色 dp[i+1][j]+1
2.如果存在s2[i]==s2[k],可以把i和k一起涂色 dp[i+1][k]+dp[k+1][j]
考虑s1和s2存在相同的字母的情况:
ans[i]表示区间[0,i]涂色的次数
1.如果s1[i]==s2[i],ans[i]==ans[i-1];
2.ans[i]=min(ans[j]+dp[j+1][i]);可以分成区间[0,j]和区间[j+1,i]分别......
阅读全文