为什么不初始化f为无穷大就能AC:
#include <cstdio>
#include <cstring>
#define min(a,b) ((a)<(b)?(a):(b))
char s[1003];
int len,f[1003][1003];
int main(){
scanf("%s",s+1),len=strlen(s+1);
for(int i=1;i<=n;i++) f[i][i]=0;
for(int i=len-1;i>=1;i--){
for(int j=i+1;j<=len;j++){
if(s[i]==s[j])
f[i][j]=f[i+1][j-1];
else
f[i][j]=min(f[i+1][j],f[i][j-1])+1;
}
}
printf("%d\n",f[1][len]);
return 0;
}
而将f初始值设为无穷大就只有60pts?
#include <cstdio>
#include <cstring>
#define min(a,b) ((a)<(b)?(a):(b))
char s[1003];
int len,f[1003][1003];
int main(){
scanf("%s",s+1),len=strlen(s+1);
memset(f,0x3f,sizeof f);//多了这一句
for(int i=1;i<=len;i++) f[i][i]=0;
for(int i=len-1;i>=1;i--){
for(int j=i+1;j<=len;j++){
if(s[i]==s[j])
f[i][j]=f[i+1][j-1];
else
f[i][j]=min(f[i+1][j],f[i][j-1])+1;
}
}
printf("%d\n",f[1][len]);
return 0;
}