/*
动态规划照亮世界!!!
bool类型的hw[i][j]数组表示字符串第i到j位是否为回文子串
dp[i]表示0到i位最少分割串数
*/
#include<bits/stdc++.h>
using namespace std;
string st;
int dp[1005];
bool hw[1005][1005];
int main()
{
ios::sync_with_stdio(false);
cin>>st;
for(int i=0;i<st.size();i++)
hw[i][i]=true;
dp[0]=1;
for(int i=1;i<st.size();i++)
{
dp[i]=dp[i-1]+1;
for(int j=0;j<i;j++)
{
if(st[i]==st[j]&&(i-j<2||hw[j+1][i-1]))
{
hw[j][i]=true;
if(j==0) dp[i]=1;
else dp[i]=min(dp[i],dp[j-1]+1);
}
}
}
cout<<dp[st.size()-1];
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int dp[1005];
bool check(string s,int l,int r)
{
while(l<r)
{
if(s[l]!=s[r])
{
return 0;
}
l++;
r--;
}
return 1;
}
int main()
{
ios::sync_with_stdio(false);
string s;
cin>>s;
for(int i=0;i<s.size();i++)
{
dp[i]=dp[i-1]+1;
for(int j=1;j<i;j++)
{
if(check(s,j,i))
{
dp[i]=min(dp[i],dp[j-1]+1);
}
}
}
cout<<dp[s.size()-1];
return 0;
}
为啥只对一个点啊。。。。。。(明明也是dp)
帮我看一下QVQ
把第25行j=1改成j=0