题目链接:

  https://vijos.org/p/1111

题目大意:

  多组数据,给两个字符串s1,s2,求把s1,s2拆开从前往后合并后最短是多少

  apple + peach = appleach  ananas  + banana = bananas  pear + peach = pearch

题目思路:

  【动态规划】

  先求最长公共子序列,f[i][j]表示s1匹配到第i位,s2匹配到第j位的最多重叠字母数。

  最终答案=len(s1)+len(s2)-f[len(s1)][len(s2)]

//
//by coolxxx
<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<map>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define eps (1e-8)
#define J 10
#define MAX 0x7f7f7f7f
#define PI 3.14159265358979323
#define N 104
using namespace std;
typedef long long LL;
int cas,cass;
int n,m,lll,ans;
char s1[N],s2[N];
int f[N][N];
int main()
{#ifndef ONLINE_JUDGEfreopen("1.txt","r",stdin);
//  freopen("2.txt","w",stdout);#endifint i,j;
//  for(scanf("%d",&cas);cas;cas--)
//  for(scanf("%d",&cas),cass=1;cass<=cas;cass++)while(~scanf("%s%s",s1,s2))
//  while(~scanf("%d",&n)){n=strlen(s1);m=strlen(s2);mem(f,0);for(i=1;i<=n;i++){for(j=1;j<=m;j++){f[i][j]=max(f[i-1][j],f[i][j-1]);if(s1[i-1]==s2[j-1])f[i][j]=max(f[i][j],f[i-1][j-1]+1);}}printf("%d\n",n+m-f[n][m]);}return 0;
}
/*
////
*/

【动态规划】【最长公共子序列】Vijos P1111 小胖的水果相关推荐

  1. 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence

    动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...

  2. 详解动态规划最长公共子序列--JavaScript实现

    前面两篇我们讲解了01背包问题和最少硬币找零问题.这篇将介绍另一个经典的动态规划问题--最长公共子序列.如果没看过前两篇,可点击下面链接. 详解动态规划最少硬币找零问题--JavaScript实现 详 ...

  3. 动态规划1--最长公共子序列

    动态规划1--最长公共子序列 一.动态规划 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地采用把大问题分解成子问题,并 综合子问题的解导出大问题的解的方法,问题求解耗时 ...

  4. 最长公共子序列php,动态规划(最长公共子序列LCS)

    概念 求解决策过程最优化的结果 (可能有多个) 把多阶段过程转化为一系列单阶段过程,利用各阶段之间的关系,逐个求解 计算过程中会把结果都记录下,最终结果在记录中找到. 举例 求两个字符串的最长公共子序 ...

  5. 最长公共子序列动态规划c语言,动态规划----最长公共子序列(C++实现)

    最长公共子序列 题目描述:给定两个字符串s1 s2 - sn和t1 t2 - tm .求出这两个字符串的最长公共子序列的长度.字符串s1 s2 - sn的子序列指可以表示为 - { i1 < i ...

  6. 动态规划--最长公共子序列

    1. 子序列 摘自维基百科 在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置而形成的新序列. 例如: 令 为一序列 那么,以下序列 是 的子序列之一.对应定义里的自然数 ...

  7. 动态规划——最长公共子序列(LCS)

    最长公共子序列的问题描述为: 下面介绍动态规划的做法. 令 dp[i][j] 表示字符串 A 的 i 号位与字符串 B 的 j 号位之前的 LCS 长度(下标从 1 开始),如 dp[4][5] 表示 ...

  8. 算法导论之动态规划(最长公共子序列和最优二叉查找树)

    动态规划师通过组合子问题的解而解决整个问题,将问题划分成子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解.和分治算法思想一致,不同的是分治算法适合独立的子问题,而对于非独立的子问题,即各 ...

  9. 动态规划—最长公共子序列

    问题描述:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度.比如:text1 = "abcde", text2 = "ace" ...

最新文章

  1. Vue之Todolist案例和ES6语法
  2. 让我来教你 PHP 函数调用
  3. 高通8x12平台开机画面制作工具
  4. 在 Java 中应用设计模式 - Factory Method
  5. python继承问题_深入浅析python继承问题
  6. Spring Boot学习笔记(1)
  7. python xpath定位不到_Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)...
  8. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
  9. 【数据结构与算法】排序 冒泡、插入、选择 O(n^2)
  10. 再聊Spring Bean的生命周期
  11. iOS打包后收不到推送信息
  12. 高精度三维扫描仪用于运动鞋逆向建模
  13. 数据库原理与应用(何玉洁 第四版)第六章课后题答案
  14. VMWare安装CentOS8及黑屏问题解决方法
  15. num在c语言中作用,num是什么词性
  16. JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
  17. 冬季送暖!实用围巾打法!(图)
  18. 什么时候不要采用微服务架构
  19. 互联网电影上线,手机电影院移动端就可以看电影
  20. FastJson的JSON.isValid()出现BUG!

热门文章

  1. STM32+移远MC20模块采用MQTT协议登录OneNet上传GPS数据
  2. 使用 cpca 提取地址所在省份,通过多信息提取地址包含区号并进行表表组合更新
  3. css多重背景大小,CSS-多重背景图像
  4. HDU 3625 Examining the Rooms(10年天津网赛,斯特灵数)
  5. jQuery MiniUI 开发教程 导航控件 ContextMenu:右键菜单(四)
  6. html5如何绑定域名,墨涩网 - Coding搭建html静态网站后绑定域名+SSL证书——墨涩网...
  7. php中分页公式,php分页函数完整实例代码
  8. iproute2和流量控制(ip和tc工具)---iproute2/ip/tc/qdisc实现Linux下的QoS控制
  9. java怎么赋值成中文,java怎么赋值
  10. 打造你的范儿:雷锋网专访范儿街CEO李劲