acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • A93770题解

    题目已经明确说明,这道题是让我们求最长公共子序列 什么是最长公共子序列? 最长公共子序列就是两个或多个字符串公共的子序列,并且是最长的 如: abc bcd 这两个字符串就有三个子序列 "b","c","bc" 但是我们要找最长的那个,所以是“bc”。所以答案为2(长度是2) 那怎么求呢 由于这是一道动态规划题,所以有3个步骤 1.定义状态 我们设dp[i][j]是指字符串 s 的前 i 项和 t 的前 j 项的最长公共子序列长度 2.转移方程 我们先看看dp[i][j]可以由哪里转移过来 第一条:如果s[i]和t[j]相等 那么dp[i][j]就可以从dp[i-1][j-1]转移过来,只要长度加1就可以了 第二条:如果它们的结尾不同 让我们来想一想,它们的结尾都不同了画黄色圈圈的两段字符串可能相同吗? 所以s[i]和t[j]中总有一个是没用的 因此我们就得到了转移方程 3.最终答案 根据状态的意思,我们就能知道,最终答案肯定是dp[s.size()][t.size()] 代码:

    userId_undefined
    ..
    空间掌握者I/O·IO入门者循环·循环打卡人数组·数组操作员造物者俄罗斯套娃大师
    9阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页