pku 1159 Palindrome 使用滚动数组

使用滚动数组

 

题目:

http://acm.pku.edu.cn/JudgeOnline/problem?id=1159

 

#include <stdio.h> #include <string.h> #define max 5002 #define MAX(x,y) (x > y ? x : y) //滚动数组 short g[2][max]; char sa[max]; char sb[max]; int main() { //freopen("in.txt","r",stdin); int i,j,n; while(scanf("%d%s",&n,sa + 1) != EOF){ memset(g,0,sizeof(g)); for(i=1;i<=n;i++) sb[i]=sa[n+1-i]; sb[i]='/0'; for(i = 1;i <= n;i++) for(j = 1;j <= n;j++) if(sa[i] == sb[j]) g[i % 2][j] = g[(i - 1) % 2][j] + 1; else g[i % 2][j] = MAX(g[(i - 1) % 2][j],g[i % 2][j - 1]); printf("%d/n",n - g[n % 2][n]); } return 0; }

你可能感兴趣的:(pku 1159 Palindrome 使用滚动数组)