Poj 1159 Palindrome
2012-12-27 23:10
417 查看
题目连接:http://poj.org/problem?id=1159
注意:由于c[5000][5000]会爆栈,所以我们要采用滚动数组:
使用c[2][5000]来求解:
注意:由于c[5000][5000]会爆栈,所以我们要采用滚动数组:
使用c[2][5000]来求解:
#include <iostream> #include <stdio.h> #include <string.h> #define M 5010 using namespace std; void reserve(char *a,char *b) { for(int i=0;i<strlen(a);i++) { b[strlen(a)-1-i] = a[i]; } b[strlen(a)] = '\0'; } void lcs(char *a,char *b,int c[][M]) { int n = strlen(a); for(int i=1;i<=n;i++) { for(int j =1;j<=n;j++) { if(a[i-1] == b[j-1]) { c[i%2][j] = c[(i-1)%2][j-1] + 1; } else { c[i%2][j] = max(c[(i-1)%2][j],c[i%2][j-1]); } } } } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int n; char a[M],b[M]; int c[2][M]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); scanf("%d",&n); scanf("%s",a); reserve(a,b); lcs(a,b,c); printf("%d\n",n - c[n%2] ); return 0; }
相关文章推荐
- POJ-1159-Palindrome -dp
- POJ1159 Palindrome
- poj 1159 Palindrome - 动态规划
- POJ 1159:Palindrome 最长公共子序列
- POJ1159 Palindrome 简单的DP
- 【One more】poj1159 Palindrome
- poj 1159 Palindrome 【LCS + 滚动数组】
- POJ1159——LCS+滚动数组——Palindrome
- poj 1159 && hdu 1513 Palindrome(LCS)
- poj-1159-Palindrome
- 【转】POJ 1159 Palindrome【经典的DP回文问题】
- POJ 1159 Palindrome 最大公共子序列+滚动数组
- POJ 1159 Palindrome
- poj - 1159 - Palindrome(滚动数组dp)
- POJ 1159 Palindrome
- poj 1159 palindrome
- POJ1159 Palindrome
- poj 1159 Palindrome_(最长公共子序列的应用)
- 【poj 1159】Palindrome 题意&题解&代码(C++)
- poj1159 palindrome(动态规划+滚动数组)