7-2 最长公共子序列 (10 分)(思路加详解)

80 阅读3分钟

第一行包含两个整数N和M。1≤N,M≤1000

第二行包含一个长度为N的字符串,表示字符串A。

第三行包含一个长度为M的字符串,表示字符串B。

字符串均由小写字母构成。

输出格式:

输出一个整数,表示最大长度。

输入样例:

4 5

acbd

abcbd

输出样例:

4

二:思路

===================================================================

区分:最长公共子序列和最长公共子串

举例:str1:abcd; str2:abecd

最长公共子序列: abcd

最长公共子串:ab

思路:思路来源于 《算法图解》 一书,主要是将问题转化成方格的形式(可以用二维数组进行表示)

横纵分别为两个字符串 那么在比较的时候,

如果两个字符相同,则将其所对应的坐标所代表的值为 左上方坐标的值加一

如果两个字符不相同,则选择其上方和左方中最大的值来代表

在这里插入图片描述

三:上码

===================================================================

/*

区分:最长公共子序列和最长公共子串

举例:str1:abcd; str2:abecd

最长公共子序列: abcd

最长公共子串:ab

思路:思路来源于 《算法图解》 一书,主要是将问题转化成方格的形式(可以用二维数组进行表示)

横纵分别为两个字符串 那么在比较的时候,

如果两个字符相同,则将其所对应的坐标所代表的值为 左上方坐标的值加一

如果两个字符不相同,则选择其上方和左方中最大的值来代表

*/

#include<bits/stdc++.h>

using namespace std;

int main(){

int N,M;

string str1,str2;

cin >> N >> M;

cin >> str1 >> str2;

int m[N+1][M+1];

for(int i = 0; i < N + 1; i++){

for(int j = 0; j < M + 1; j++){

m[i][j] = 0;

}

那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(一)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(二)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Redis常见面试题汇总(300+题)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

相关阅读docs.qq.com/doc/DSmxTbFJ1cmN1R2dB