题意:给定一个字符串,分解成多个子串,每个子串都是回文串,问最少能分成多少个子串。
题解:
dp[i]表示前i个字符串分割成最少回文子串的数量;
0<=j<=i;如果字符串从j到i是回文串,那么dp[i]=min(dp[i],dp[j-1]+1);
#includeusing namespace std;int dp[1005];string s;bool ok(int j,int i){ while(j<=i) { if(s[j]!=s[i]) return false; i--; j++; } return true;}int main(){ int n; cin>>n; while(n--) { cin>>s; int len=s.length(); for(int i=0;i