1159Palindrome
一开始用了二维的数组,结果空间超了
后来用了滚动数组就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