HDU 1159 Common Subsequence 动态规划

2017-08-06 15:41:04

writer:pprp

刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正)

题意如下:

给两个字符串,找到其中大的公共子序列,每个样例输出一个数;

最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:

  子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;

  也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。

动态规划的思想:abcfbc 和 abfcab找匹配值(图是大佬画的,借用一下^_^)

  

可以看出:

状态的定义:

  当前匹配到某一位置时已经匹配的数目

状态转移:设记录匹配状态的二维数组叫a[1001][1001]

    如果str1[i] == str2[j] 那么a[i][i] = a[i-1][j-1] + 1;

    如果str1[i] != str2[j] 那么a[i][j] = max(a[i-1][j], a[i][j-1]);

状态结束:

    匹配完成


 

代码如下:

  

#include <iostream>
#include <string>
#include <cstring>using namespace std;int a[1001][1001];int _max(int a, int b)
{return a > b ? a : b;
}int main()
{string str1,str2;while(cin >> str1 >> str2){int len1 = str1.length();int len2 = str2.length();memset(a,0,sizeof(a));for(int i = 1 ; i <= len1 ; i++){for(int j = 1 ; j <= len2 ; j++){if(str1[i-1] == str2[j-1]){a[i][j] = a[i-1][j-1] + 1;}else{a[i][j] = _max(a[i-1][j],a[i][j-1]);}}}cout << a[len1][len2] << endl;}return 0;
}

提交状态:ac

转载于:https://www.cnblogs.com/pprp/p/7295014.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用类,求三个数的最大数

上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int a,b,c;a in.nextInt();b in.nextInt();c in.nextInt();int num max(a,b,c);System.out.println("…

【Xmail】使用Xmail搭建局域网邮件服务器

下载地址&#xff1a; http://www.xmailserver.org/xmail-1.27.win32bin.zip&#xff0c;当前最新版本 1.27。 解压文件&#xff1a;xmail-1.27.win32bin.zip 1、把其中的 MailRoot 目录拷贝到 C:\&#xff1b; 2、把 C:\xmail-1.27.win32bin\xmail-1.27 目录下的所有文件&am…

linux ntfs硬盘自动挂,linux下查看所有硬盘分区+挂接NTFS磁盘/硬盘+自动挂接硬盘方法...

基本上所有Linux 发行版在启动系统时都是根据/etc/fstab文件的配置来挂载分区的。在/etc/fstab中&#xff0c;根据不同格式的分区&#xff0c;其挂载参数也不同&#xff0c;参数不同其结果不同&#xff0c;包括用户的读写权限&#xff0c;下面一一说来。1、对于fat32格式分区&a…

uploadify 配置后,页面显示无效果

uploadify使用的是Flash版本 谷歌浏览器&#xff1a;默认没有开启Flash&#xff0c;进行如下图设置即可 转载于:https://www.cnblogs.com/daryl/p/7299471.html

linux 磁盘科隆,上海第二工业大学嵌入式操作系统B复习(无答案版)

嵌入式操作系统B复习答疑时间6月18日9&#xff1a;00—14:00,15#518填空题20分&#xff0c;选择题20分&#xff0c;判断题10分&#xff0c;简答题20分&#xff0c;实验题30分。一&#xff0e;填空题1.ARM中断处理有哪两种中断模式、快速中断模式。2.基于J-TAG调试结构包括哪几个…

Day39:threading模块、ThreadLocal

一、threading模块 1、线程对象的创建 1.1 Thread类直接创建 import threading import timedef countNum(n): # 定义某个线程要运行的函数print("running on number:%s" %n)time.sleep(3)if __name__ __main__:t1 threading.Thread(targetcountNum,args(23,)) #生成…

linux h5 动画软件下载,技术|7款绚丽的jQuery/HTML5动画及源码

jQuery是一款非常流行的JavaScript框架&#xff0c;利用jQuery&#xff0c;我们可以制作简单的动画效果&#xff0c;但是结合HTML5&#xff0c;这样的动画效果就会变得更加出彩。本文分享了7款jQuery结合HTML5的动画以及源码下载。1、HTML5/SVG实现布谷鸟时钟动画这是一款非常有…

时钟抖动对高速ADC采样系统的影响

在高速数据采样中&#xff0c;ADC时钟信号的稳定性对其性能有至关重要的影响&#xff0c;因为这些抖动会破坏高速ADC的时序。 孔径的定义 孔径时间ta&#xff0c;是指从采样时钟跳变开始&#xff0c;一直到保持电压建立。换言之&#xff0c;孔径是指采样保持电路中开关切换的时…

7-3 堆中的路径 (25 分)

7-3 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i&#xff0c;打印从H[i]到根结点的路径。 输入格式: 每组测试第1行包含2个正整数N和M(≤1000)&#xff0c;分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000…

windows7远程linux,用XManager在Windows7下远程桌面连接Linux

用XManager在Windows7下远程桌面连接LinuxXManager是一个简单易用的高性能的运行在Windows平台上的X-Server软件&#xff0c;而Gnome和KDE就是X-Client&#xff0c;Linux下的X-Server则为Xorg。它能把远端Unix/Linux的桌面无缝地带到你的Windows上&#xff0c;甚至当你的电脑是…

js学习总结----柯里化函数

柯里化函数函数思想:一个JS预处理的思想->利用函数执行可以形成一个不销毁的私有作用域的原理&#xff0c;把需要预先处理的内容都存在这个不销毁的作用域中&#xff0c;并且返回一个小函数&#xff0c;以后我们执行的都是小函数&#xff0c;在小函数中把之前预先存储的值进…

ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息

ansible 获取系统信息的一些范例&#xff0c;ansible系统信息主机名&#xff1a;echo ansible 193.168.120.101 -m setup -a "filteransible_hostname" | grep hostname | awk -F [:] {print $2} | sed -e /"/s/"//g内存&#xff1a;echo ansible 193.168.…

linux常用计划任务,浅谈:linux cron 计划任务常用符号小结

[rootwx-a ~]# crontab --helpcrontab: invalid option -- -crontab: usage error: unrecognized optionusage: crontab [-u user] filecrontab [-u user] [ -e | -l | -r ](default operation is replace,per 1003.2)-e (edit users crontab) 编辑crontab 工作内容-l (list us…

Vijos——T 1629 八

https://vijos.org/p/1629 描述 八是个很有趣的数字啊。八发&#xff0c;八八爸爸&#xff0c;88拜拜。当然最有趣的还是8用二进制表示是1000。怎么样&#xff0c;有趣吧。当然题目和这些都没有关系。 某个人很无聊&#xff0c;他想找出[a,b]中能被8整除却不能被其他一些数整除…

Ubuntu 22.04 配置LLM大语言模型环境

本文介绍了清洁安装的Ubuntu Server 22.04 LTS安装NVIDIA显卡驱动、CUDA 12.1、cuDNN的方法及ChatGLM3、百川2、FastChat等大语言模型的部署使用方法。 安装NVIDIA驱动 禁用nouveau sudo vi /etc/modprobe.d/blacklist.conf尾部追加一行 blacklist nouveau执行并重启系统 …

1006 Sign In and Sign Out (25 分)

1006 Sign In and Sign Out (25 分) At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the records of signing in’s and out’s, you are supposed to fi…

1007 Maximum Subsequence Sum (25 分)

1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N1, N2, …, Nk}. A continuous subsequence is defined to be { Ni, N​i1, …, Nj​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of i…

python - hadoop,mapreduce demo

Hadoop,mapreduce 介绍 59888745qq.com 大数据工程师是在Linux系统下搭建Hadoop生态系统&#xff08;cloudera是最大的输出者类似于Linux的红帽&#xff09;&#xff0c; 把用户的交易或行为信息通过HDFS&#xff08;分布式文件系统&#xff09;等存储用户数据文件&#xff0c;…

linux rsync 常见错误,Linux rsync常见错误

rsync是类unix系统下非常高效&#xff0c;实用的数据镜像备份工具。在rsyncd.log里面或.err文件里面&#xff0c;我们都是通过错误日志查看&#xff0c;可以分析出错误的原因。问题一&#xff1a;ERROR: chroot failedrsync error: error starting client-server protocol (cod…

Vue父子组件间的通信

父组件通过 props 向下传递数据给子组件&#xff0c;子组件通过 events 向上给父组件发送消息。 父组件&#xff1a; <div><div style"background:#34495E;color: #fff; padding:20px"><p style"margin-bottom: 20px">这是父组件</p&…