当前位置: 首页 > news >正文

UVA 10405【LCS】【背包】

本题为 LCS 裸题,请求评橙。

考虑 DP。

状态 f [ i ] [ j ] f[i][j] f[i][j] 为第一个字符串选到了 i i i,第二个字符串选到了 j j j(位置)。

容易发现,如果第一个字符串 i i i 位置的字符和第二个字符串 j j j 位置的字符一样,那么有 f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] + 1 f[i][j] = f[i - 1][j - 1] + 1 f[i][j]=f[i1][j1]+1,否则有 f [ i ] [ j ] = max ⁡ ( f [ i − 1 ] [ j ] , f [ i ] [ j − 1 ] ) f[i][j] = \max(f[i - 1][j], f[i][j - 1]) f[i][j]=max(f[i1][j],f[i][j1])

时间复杂度 O ( n 2 ) O(n^2) O(n2)

实际上有时间复杂度更好的 O ( n log ⁡ n ) O(n\log n) O(nlogn) 算法,但是超纲没写。

坑点:有空格,需要使用 getline 读入。

// 这回只花了45min就打完了。
// 真好。记得多手造几组。最好有暴力对拍。

#include <bits/stdc++.h>

using namespace std;

int f[2010][2010];

int main()
{
  string s, t;
  while (getline(cin, s), getline(cin, t)) // debug 有可能有空格
  {
    if (cin.eof())
      break;
    int l1 = s.size(), l2 = t.size();
    s = ' ' + s, t = ' ' + t;
    for (int i = 1; i <= l1; i ++)
      for (int j = 1; j <= l2; j ++)
        if (s[i] != t[j])
          f[i][j] = max(f[i - 1][j], f[i][j - 1]);
        else
          f[i][j] = f[i - 1][j - 1] + 1;
    cout << f[l1][l2] << '\n';
  }
  return 0;
}

相关文章:

  • Git学习总结
  • Java项目:SSM医药信息管理系统
  • python——装饰器深入研究(一)
  • 猿创征文|【C++游戏引擎Easy2D】炫酷动画来这学,位移动画构造函数让节点执行动画
  • 做好规划 拿下未来!
  • MATLAB算法实战应用案例精讲-【智能优化算法】非支配排序遗传算法-NSGA-Ⅱ(附python和matlab代码)
  • 完美免费在线去背景图片,便捷变速。在5秒内消除或者替换图像背景,智能调整颜色,所有操作都在浏览器完成,无需上传图像 - BgSub
  • 一文掌握MySQL的索引(认真排版、简洁易懂)
  • 十、mongodb分片集群运维相关
  • 每日十(?)题之20220903
  • 2.数据结构与算法 进阶知识
  • 下载JDK8 JVM源码
  • 基于某钉探索针对CEF框架的一些逆向思路
  • C++迭代器
  • 关联容器(字典)map
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • css选择器
  • FineReport中如何实现自动滚屏效果
  • Golang-长连接-状态推送
  • golang中接口赋值与方法集
  • iOS小技巧之UIImagePickerController实现头像选择
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpriteKit 技巧之添加背景图片
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 不上全站https的网站你们就等着被恶心死吧
  • 从setTimeout-setInterval看JS线程
  • 关于List、List?、ListObject的区别
  • 两列自适应布局方案整理
  • 聊聊flink的BlobWriter
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 实现菜单下拉伸展折叠效果demo
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 数组大概知多少
  • 思维导图—你不知道的JavaScript中卷
  • 通过npm或yarn自动生成vue组件
  • 为视图添加丝滑的水波纹
  • 移动端唤起键盘时取消position:fixed定位
  • 自定义函数
  • Mac 上flink的安装与启动
  • UI设计初学者应该如何入门?
  • 选择阿里云数据库HBase版十大理由
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (33)STM32——485实验笔记
  • (function(){})()的分步解析
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (论文阅读11/100)Fast R-CNN
  • (七)理解angular中的module和injector,即依赖注入
  • (三)Honghu Cloud云架构一定时调度平台
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • **python多态
  • 、写入Shellcode到注册表上线
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)