博客
关于我
反恐训练营
阅读量:200 次
发布时间:2019-02-28

本文共 1602 字,大约阅读时间需要 5 分钟。

根据上述分析,我们可以使用动态规划的方法来解决这个问题。具体步骤如下:

  • 初始化一个二维数组 f,大小为 (n+1) x (m+1),其中 n 是子弹和恐怖分子的类型数,m 是序列的长度。
  • 填充边界条件:当 i=0j=0 时,f[i][j] = 0
  • 遍历每个 ij,计算 f[i][j]
    • 如果 a[i] == b[j],则 f[i][j] = max(f[i-1][j], f[i][j-1], f[i-1][j-1] + score[a[i]])
    • 否则,f[i][j] = max(f[i-1][j], f[i][j-1])
  • 最终,f[m][n] 就是炜炜能获得的最大分数。
  • 通过这种方法,我们可以高效地计算出最优解。

    以下是实现代码:

    #include 
    #include
    #include
    #include
    using namespace std;int main() { int n; while (cin >> n) { string a_sub, b_sub; for (int i = 1; i <= n; ++i) { a_sub += tolower(cin >> (char&c)); b_sub += tolower(cin >> (char&c)); } map
    score; for (int i = 1; i <= n; ++i) { int x; cin >> x; score[tolower(a_sub[i-1])] = x; } int len_a = a_sub.size(); int len_b = b_sub.size(); vector
    > dp(len_a + 1, vector
    (len_b + 1, 0)); for (int i = 1; i <= len_a; ++i) { for (int j = 1; j <= len_b; ++j) { if (a_sub[i-1] == b_sub[j-1]) { if (i == 1 || j == 1) { dp[i][j] = score[a_sub[i-1]]; } else { dp[i][j] = dp[i-1][j-1] + score[a_sub[i-1]]; } } else { dp[i][j] = max(dp[i-1][j], dp[i][j-1]); } } } cout << dp[len_a][len_b] << endl; } return 0;}

    代码解释:

  • 输入处理: 读取子弹和恐怖分子的类型数 n,然后读取各自的序列 a_subb_sub。接着读取每个字母对应的得分 score
  • 动态规划初始化: 创建一个二维数组 dp,大小为 (len_a + 1) x (len_b + 1),初始化为0。
  • 填充边界条件:i=1j=1 时,如果 a_sub[i-1] == b_sub[j-1],则 dp[i][j] = score[a_sub[i-1]],否则 dp[i][j] = 0
  • 状态转移: 遍历每个 ij,根据子弹和恐怖分子的当前字符是否匹配,更新 dp[i][j] 的值。
  • 输出结果: 打印最终的最大分数 dp[len_a][len_b]
  • 通过这种方法,我们可以高效地解决问题,并找到炜炜能获得的最大分数。

    转载地址:http://hptn.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
    查看>>
    PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
    查看>>
    PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
    查看>>
    PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
    查看>>
    PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
    查看>>
    PostgreSQL学习笔记:PostgreSQL vs MySQL
    查看>>
    PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
    查看>>
    PostgreSQL导入shape数据(地图工具篇.10)
    查看>>
    PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
    查看>>
    PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
    查看>>
    Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
    查看>>
    PostgreSQL忘记密码
    查看>>
    PostgreSQL数据库pg_dump命令行不输入密码的方法
    查看>>
    PostgreSQL新手入门
    查看>>
    postgresql树状结构查询示例
    查看>>
    PostgreSQL流复制参数max_wal_senders详解
    查看>>
    postgresql流复制配置
    查看>>
    PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法
    查看>>
    PostgreSQL的 initdb 源代码分析之九
    查看>>
    PostgreSQL的安装与使用指南
    查看>>