Poj 1159 Palindrome
来源:互联网 发布:杭州龙席网络官网 编辑:程序博客网 时间:2024/06/15 22:37
题意:给你一个字符串,问最少加多少个字符可以使之成为回文串。
思路:把字符串倒置 , 求最长公共子序列, 字符长度 减 最长公共子序列长度就是 结果。
注意: 卡内存, 需要用 01 数组。
代码:
#include<stdio.h>#include<string.h>int dp[2][5010]; // 01 数组, 节约内存 int max(int a,int b){if(a>b)return a;return b;}int main( ){char str[5010], str1[5010];int n,i,j;scanf("%d ",&n); // 字符串长度 scanf("%s",str); // 字符串 j=0;for(i=n-1;i>=0;i--) str1[j++] = str[i]; // 倒置 memset(dp,0,sizeof(dp)); // 初始化 for(i=0; i<n; i++) for(j=0; j<n; j++) { if(str[i] == str1[j]) dp[(i+1)%2][j+1] = dp[(i+2)%2][j]+1; else dp[(i+1)%2][j+1] = max(dp[(i+1)%2][j],dp[(i+2)%2][j+1]); } /*for(i=0;i<2;i++) { for(j=0;j<=n;j++) printf("%d",dp[i][j]); printf("\n"); }*/ printf("%d",n-dp[n%2][n]); return 0;}
阅读全文
0 0
- poj 1159 Palindrome LCS
- poj 1159 Palindrome LCS
- poj 1159 Palindrome
- poj 1159 Palindrome
- dp poj 1159 Palindrome
- poj 1159 Palindrome
- poj 1159 Palindrome
- POJ 1159 Palindrome DP
- Palindrome poj 1159
- Poj 1159 Palindrome
- poj 1159 Palindrome
- poj 1159 Palindrome 【DP】
- poj 1159Palindrome
- poj 1159 Palindrome
- POJ 1159 Palindrome
- POJ 1159 Palindrome
- Poj 1159 Palindrome
- POJ 1159 Palindrome
- Android Bugs——java.lang.IllegalStateException: FragmentManager is already executing transactions
- 【安全牛学习笔记】主动信息收集-发现(四)
- Android Studio打包APK时出现 is not translated in "en" (English) [MissingTranslation]
- Java集合概念
- 分布式Web服务器架构
- Poj 1159 Palindrome
- webPack+react 环境搭建
- 加密解密算法java实现(3)—RSA
- Java基础学习二
- HDOJ2037
- displaymanager
- 说说遇到的scanf错误(1)
- Java:关于深复制与浅复制
- GEOServer-OpenLayer-矢量切片1:制作矢量切片