poj1159 palindrome(动态规划+滚动数组)
来源:互联网 发布:淘宝助理 图片搬家 编辑:程序博客网 时间:2024/05/17 06:55
题目信息:Palindrome
利用动态规划+滚动数组,主要考虑到字符串比较长;
1 //Accepted 296K 688MS 2 #include<iostream> 3 #include<cstring> 4 5 using namespace std; 6 int c[2][5002]; 7 char str1[5002],str2[5002]; 8 int LCSLength(int n) 9 {10 int i,j;11 int e=0;12 memset(c,0,sizeof(c));13 for(i=1;i<=n;++i)14 {15 e=1-e;//这里作为行标记,标示当前计算在第e行 16 if(e==1)17 {18 for(j=1;j<=n;++j)19 {20 if(str1[i-1]==str2[j-1]) c[1][j]=c[0][j-1]+1;21 else22 c[1][j] = c[0][j]>c[1][j-1]?c[0][j]:c[1][j-1];23 }24 }25 else26 {27 for(j=1;j<=n;++j)28 {29 if(str1[i-1]==str2[j-1]) c[0][j]=c[1][j-1]+1;30 else31 c[0][j]=c[0][j-1]>c[1][j]?c[0][j-1]:c[1][j];32 }33 }34 }35 if(e==1) return c[1][n];36 else return c[0][n];37 }38 39 int main()40 {41 int n;42 cin>>n>>str1;43 for(int i=0;i<n;++i)//把题目转化成求两个串的最长公共子序列问题 44 str2[i]=str1[n-i-1];45 cout<<n-LCSLength(n)<<endl;46 //system("pause");47 return 0;48 }
- poj1159 palindrome(动态规划+滚动数组)
- POJ1159 Palindrome 动态规划+滚动数组
- 滚动数组 poj1159 Palindrome
- POJ1159 Palindrome 【动态规划】
- Palindrome POJ1159 LCS+滚动数组
- POJ1159 Palindrome (动态规划)
- POJ1159 Palindrome(滚动数组DP)
- Palindrome(poj1159)(动态规划)
- POJ 1159 Palindrome 动态规划+滚动数组
- 动态规划+滚动数组 -- POJ 1159 Palindrome
- poj1159 Palindrome 最长公共子序列 + 滚动数组
- poj1159 Palindrome(最长公共子序列, dp+滚动数组)
- HDU ACM 1513 Palindrome->动态规划(滚动数组)
- poj1159 dp 滚动数组
- poj1159(滚动数组 + DP)
- poj1159 动态规划
- poj1159-LCS滚动数组优化。
- POJ1159——Palindrome——DP+滚动数组(节省空间)
- poj1050 to the max
- 删除Android自带的系统软件注意事项
- tt
- 二分图匹配(匈牙利算法DFS实现)
- poj 1656(二维树状数组解法)
- poj1159 palindrome(动态规划+滚动数组)
- poj Alice's Chance(最大流解题)
- 有向图强连通分量的Tarjan算法
- 背包九讲(转载)
- 开机提示:error:no such partition grub rescue>
- ubuntu12.04安装jdk7
- 线程通信,生产者消费者问题(Java)
- java匿名类关闭窗口
- 百度star2012初赛第一场的题目