hdu1159 dp(最长公共子序列)
题意:给两个字符串,求这两个字符串的最长公共子序列的长度
因为之前集训的时候做过,所以现在即使会做也并不是什么稀奇的事,依旧为了自己的浅薄感到羞愧啊```
解法就是通过两个字符串的每个字符互相比较,根据比较情况相同与否确定递推关系:
dp [ i + 1 ] [ j + 1 ] 表示匹配到 a 字符串的第 i 个字符和 b 字符串的第 j 个字符时的最大匹配数,由于读字符串的时候我是从下标 0 读起的,但我需要用 dp [ 0 ] ,所以就都是加了一,否则也可以读入的时候直接从 a + 1 和 b + 1 读起。
当匹配到 a [ i ] 与 b [ j ] 时,若相等,则 dp [ i + 1 ] [ j + 1 ] = dp [ i ] [ j ] +1,即在匹配完 a [ i - 1 ] 和 b [ j - 1 ] 时的最大值再加上 1 组匹配;
若不相等,则 dp [ i + 1 ] [ j + 1 ] = max ( dp [ i + 1 ] [ j ] , dp [ i ] [ j + 1 ] )。
这样 dp 到最后就得出了结果。
#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b char a[],b[];
int dp[][]; int main(){
while(scanf("%s%s",a,b)!=EOF){
memset(dp,,sizeof(dp));
// printf("%s\n%s\n",a,b);
int l1=strlen(a),l2=strlen(b),i,j;
for(i=;i<l1;i++){
for(j=;j<l2;j++){
if(a[i]==b[j]){
dp[i+][j+]=dp[i][j]+;
}
else{
dp[i+][j+]=max(dp[i+][j],dp[i][j+]);
}
}
}
/* for(i=0;i<=l1;i++){
for(j=0;j<=l2;j++){
printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
}
}*/
printf("%d\n",dp[l1][l2]);
}
return ;
}
hdu1159 dp(最长公共子序列)的更多相关文章
- POJ 1159 Palindrome(区间DP/最长公共子序列+滚动数组)
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 56150 Accepted: 19398 Desc ...
- poj1159--Palindrome(dp:最长公共子序列变形 + 滚动数组)
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 53414 Accepted: 18449 Desc ...
- 经典dp 最长公共子序列
首先,说明一下子序列的定义…… 一个序列A={a1,a2,a3,...,an},从中删除任意若干项,剩余的序列叫A的一个子序列. 很明显(并不明显……),子序列……并不需要元素是连续的……(一开始的时 ...
- HDU 1159 Common Subsequence【dp+最长公共子序列】
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- POJ - 1458 Common Subsequence DP最长公共子序列(LCS)
Common Subsequence A subsequence of a given sequence is the given sequence with some elements (possi ...
- hdu 1503:Advanced Fruits(动态规划 DP & 最长公共子序列(LCS)问题升级版)
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ1458 Common Subsequence —— DP 最长公共子序列(LCS)
题目链接:http://poj.org/problem?id=1458 Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Tot ...
- HDU 1159 Common Subsequence --- DP入门之最长公共子序列
题目链接 基础的最长公共子序列 #include <bits/stdc++.h> using namespace std; ; char c[maxn],d[maxn]; int dp[m ...
- DP:LCS(最长公共子串、最长公共子序列)
1. 两者区别 约定:在本文中用 LCStr 表示最长公共子串(Longest Common Substring),LCSeq 表示最长公共子序列(Longest Common Subsequence ...
随机推荐
- WPS处理个人信息一种方法
下面是WPS处理个人信息的方法,具体步骤如下: 第一步:任意打开一个文件: 第二步:点击左上角WPS的小三角,找到工具——选项,如图: 第三步:进入选项后,点击用户信息: 第四步:修改个人信息,用户名 ...
- 【资料收集】QT 环境安装配置
(很详细,极力推荐) [OpenCV] -- win7下配置OpenCV的Qt开发环境 - 代码人生 - 博客频道 - CSDN.NET http://blog.csdn.net/qiurisuix ...
- RegDataToDataType
function RegDataToDataType(Value: TRegDataType): Integer; begin case Value of rdString: Result := RE ...
- 读书笔记 C# 接口之浅析
一.接口可以包含 属性.方法.事件和索引器: 二.接口不能被实例化: 三.一个类可以继承多个接口: 四.接口不能包含方法的实现: 五.继承接口的类必须实现接口中所有成员: 六.显式实现接口的成员,不能 ...
- react全家桶-路由
/src目录下新增一个pages目录,用于存放渲染页面的组件 在/src/pages中新增一个Add.js文件 /src 下的index.js 路由:import React from 'react' ...
- 从SharePoint 2013迁移到SharePoint Online - 评估工具
博客地址:http://blog.csdn.net/FoxDave 今天想跟大家分享一款从SharePoint 2013迁移到SharePoint Online时的评估工具:SharePoint ...
- 在使用Idea配置jQuery的问题
今天使用idea中引入jQuery代码时,发生的几个错误,时刻提醒 1.jQuery的驱动包要放置在web目录下 2.引入jQuery的驱动包时,语句格式为<script></scr ...
- python 创建flask项目方法
Flask是一个基于Python的web框架,它的设计目的是提供Web开发所需的最小功能子集. Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理 ...
- C++ SUBLIME TEXT3 环境配置
一.第一种方法 1.New Build System,设置C++.sublime-build编译文件 { "path": "E:\\MinGW\\bin", & ...
- Oracle流程控制语句
1.选择语句 1.1 IF...THEN...END IF语句 DECLARE MY_AGE INT; IF MY_AGE IS NULL THEN DBMS_OUTPUT.put_line('AGE ...