一开始用了二维的数组,结果空间超了
后来用了滚动数组就ACCEPT了啊
#include "iostream"
using namespace std;
int max(int a,int b){return a>b?a:b;}
int p[5002],q[5002];
int main(){
char list1[5002],list2[5002];
int n,i,j;
cin>>n;
cin>>list1;
for(i=n;i>=1;i--){
list2[n-i+1]=list1[i-1];
list1[i]=list1[i-1];
}
for(i=0;i<=n;i++){p[i]=0;}
q[0]=0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(list1[i]==list2[j])q[j]=p[j-1]+1;
else q[j]=max(q[j-1],p[j]);
}
for(j=1;j<=n;j++)p[j]=q[j];
}
cout<<n-p[n]<<endl;
}
看到网上的人说要开二维数组的话,就用short