博客
关于我
寒假训练补题-第六天-D4-最长公共子序列dp-容易
阅读量:164 次
发布时间:2019-02-28

本文共 1973 字,大约阅读时间需要 6 分钟。

原题连接:

Problem Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, …, xm> another sequence Z = <z1, z2, …, zk> is a subsequence of X if there exists a strictly increasing sequence <i1, i2, …, ik> of indices of X such that for all j = 1,2,…,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.
The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.

问题描述

给定序列的子序列是给定序列,其中省略了一些元素(可能没有)。
给定序列X = <x1,x2,…,xm>另一个序列Z = <z1,z2,…,zk>是X的子序列,如果存在严格增加的序列<i1,i2,…, ik>对于所有j = 1,2,…,k,xij = zj,X的索引,…,ik>。
例如,Z = <a,b,f,c>是X = <a,b,c,f,b,c>的子序列,其索引序列<1,2,4,6>。
给定两个序列X和Y,问题是找到X和Y的最大长度公共子序列的长度。
程序输入来自文本文件。
文件中的每个数据集包含两个表示给定序列的字符串。
序列由任意数量的空格分隔。
输入数据是正确的。
对于每组数据,程序在标准输出上打印从单独行开始的最大长度公共子序列的长度。

Sample Input

abcfbc abfcab
programming contest
abcd mnp

Sample Output

4
2
0
个人思路:处理时可以选择字符的读取从第一个位置开始,或者把 i 号字符的状态存储到i+1号位置去,这样就从1号开始处理了。
ac代码:

#include 
#include
#include
#define Max( a, b ) (a) > (b) ? (a) : (b)using namespace std;char s1[1005], s2[1005];int dp[1005][1005];int main(){ int len1, len2; while (scanf("%s %s", s1 + 1, s2 + 1) != EOF) { memset(dp, 0, sizeof(dp)); len1 = strlen(s1 + 1), len2 = strlen(s2 + 1); for (int i = 1; i <= len1; ++i) { for (int j = 1; j <= len2; ++j) { if (s1[i] == s2[j]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = Max(dp[i - 1][j], dp[i][j - 1]); } } } printf("%d\n", dp[len1][len2]); } return 0;}

转载地址:http://lwtj.baihongyu.com/

你可能感兴趣的文章
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>