string和char数组差这么大的?
0分代码
#include<bits/stdc++.h>
#define endl '\n'
#define debug cout<<"debug"
using namespace std;
int dp[1001][1001];
int main(){
string str1,str2;
cin>>str1;
str2=str1;
reverse(str2.begin(),str2.end());
int len=str1.length();
for(int i=0;i<len;i++)
for(int j=0;j<len;j++)
if(str1[i]==str2[j])dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<len-dp[len-1][len-1];
return 0;
}
AC代码
#include<bits/stdc++.h>
#define endl '\n'
#define debug cout<<"debug"
using namespace std;
int dp[1001][1001];
char str1[1001],str2[1001];
int main(){
scanf("%s",str1+1);
int len=strlen(str1+1);
for(int i=1;i<=len;i++)str2[i]=str1[len-i+1];
for(int i=1;i<=len;i++)
for(int j=1;j<=len;j++)
if(str1[i]==str2[j])dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<len-dp[len][len];
return 0;
}
有大佬解释一下吗?(前者本地过了)