http://poj.org/problem?id=1458

一道容易的DP,求最长公共子序列的

dp[i][j],代表str1中的第i个字母和str2中的第j个字母的最多的公共字母数

 #include <stdio.h>
#include <iostream>
#include <string.h> using namespace std;
int dp[][]={}; int main()
{
char str1[],str2[];
while(~scanf("%s %s",str1,str2))
{
/* scanf("%s",str1)
scanf("%s",str2);*/
int len1=strlen(str1);
int len2=strlen(str2);
for(int i=;i<=len1;i++)
for(int j=;j<=len2;j++)
{
if(str1[i-]==str2[j-]) dp[i][j]=dp[i-][j-]+; //这个就是那个递推公式,但str1[i-1]和str2[j-1]想等于时dp[i][j]就会等于前一个加一,不等就是等于前面的最大的一个
else dp[i][j]=max(dp[i-][j],dp[i][j-]);
}
printf("%d\n",dp[len1][len2]);
}
return ;
}

http://poj.org/problem?id=1159

这个是POJ1159的题目,试求插入的最少的字符,使其变成回文字符串

这个最少的字符MIN=N-N和N的逆序数的最长公共子序列

所以这道题也就是和上面的那个题目一样,求最长的公共子序列,不过有一个地方比上面要特殊一点,就是数组只可以开滚动数组,不然POJ就爆内存

也只是在部分地方进行了改动即可

在这里也使用了一个我以前从未用过的函数,reverse ,这个函数在algorithm的头文件里

作用是把远数组变成逆序的,使用方法也就是reverse(begin(),end());

 #include <stdio.h>
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm> using namespace std; int dp[][];
string str1,str2; int main(){
int n;
while(scanf("%d",&n)!=EOF){
cin>>str1;
str2=str1;
memset(dp,,sizeof(dp));
reverse(str2.begin(),str2.end());
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
if(str1[i-]==str2[j-]){
int tem=dp[(i-)%][j-]+; //这个和上面的不同的原因在于这个是滚动数组,而滚动数组的话,原数组一般都是有值的,只不过是新的值在原数组上进行覆盖而已,求最大的公共子序列,就不能排除原来的数组的dp[i%2][j]会小于tmp;
dp[i%][j]=max(dp[i%][j],tem);
}
else dp[i%][j]=max(dp[(i-)%][j],dp[i%][j-]);
}
cout<<n-dp[n%][n]<<endl;
}
return ;
}

POJ 1458 1159的更多相关文章

  1. LCS POJ 1458 Common Subsequence

    题目传送门 题意:输出两字符串的最长公共子序列长度 分析:LCS(Longest Common Subsequence)裸题.状态转移方程:dp[i+1][j+1] = dp[i][j] + 1; ( ...

  2. POJ 1458 Common Subsequence(LCS最长公共子序列)

    POJ 1458 Common Subsequence(LCS最长公共子序列)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?c ...

  3. POJ 1458 最长公共子序列(dp)

    POJ 1458 最长公共子序列 题目大意:给出两个字符串,求出这样的一 个最长的公共子序列的长度:子序列 中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的 先后顺序一致. Sam ...

  4. POJ 1458 Common Subsequence (动态规划)

    题目传送门 POJ 1458 Description A subsequence of a given sequence is the given sequence with some element ...

  5. HDU 1159 &amp;&amp; POJ 1458

    最长公共子序列.状态转移方程见代码. #include <iostream> #include <cstdio> #include <cstring> using ...

  6. HDU 1159 Common Subsequence(POJ 1458)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  7. POJ 1458 Common Subsequence (zoj 1733 ) LCS

    POJ:http://poj.org/problem?id=1458 ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=73 ...

  8. OpenJudge/Poj 1458 Common Subsequence

    1.链接地址: http://poj.org/problem?id=1458 http://bailian.openjudge.cn/practice/1458/ 2.题目: Common Subse ...

  9. poj 1458 Common Subsequence(区间dp)

    题目链接:http://poj.org/problem?id=1458 思路分析:经典的最长公共子序列问题(longest-common-subsequence proble),使用动态规划解题. 1 ...

随机推荐

  1. Python基础之--常用模块

    Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...

  2. jquery 判断网络图片,或网络文件是否存在

    $.ajax({ url : picSrc, async : false, type : 'HEAD', error : function() { picSrc = "https://ss0 ...

  3. OC-改错题

    1,类方法中不能访问成员变量 2,id后不能加*(因为id相当于NSObject *) 3,id类型的变量不能用点语法 4,类对象只能调用类方法,不能调用对象方法 .description #impo ...

  4. JavaScript parseInt函数

    首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...

  5. vim 创建和管理折叠

    参考文章: http://blog.csdn.net/bendanban/article/details/7743530 首先要有折叠, 然后才能说, 打开和关闭 折叠; 打开: zo: zip op ...

  6. 移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 )

    序言:应朋友要求随手写了一下移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 ) ,以备后用 LESS代码: .adaptive-circle { margin: 50px auto 0; ...

  7. 使用pygal 做chart图的经验分享

    看到小芮介绍了pygal文章后, http://rfyiamcool.blog.51cto.com/1030776/1378400, 我一直搞数据工作, 所以对于这种数据的展现很有兴趣. 做了点研究, ...

  8. springMVC 缓存(入门 spring+mybaties+redis一)

    使用redis之前需要咋电脑上安装redis: 使用spring+mybaties+redis的本质是扩展类   org.apache.ibatis.cache.Cache:在我们自己扩展的Cache ...

  9. 论在Windows下远程连接Ubuntu

       Ubuntu下1:下载xrdp   sudo apt-get install xrdp 2: urs/share/applications 下找到  远程桌面 设置成这样 Windows下 1; ...

  10. jquery选择器(三)-过滤选择器

    一.基本过滤选择器 二.内容过滤选择器 1. 包含文本内容为“text”的元素 2. 含有某个选择器所匹配的父元素 3. 包含有子元素或者文本的父元素 4. 不含有子元素或者文本的父元素 三.可见性过 ...