zoukankan      html  css  js  c++  java
  • Codeforces 682 D. Alyona and Strings (dp)

    题目链接:http://codeforces.com/contest/682/problem/D

    给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和。(注意是子串)

    dp[i][j][k][0] 表示a[i] == a[j]时,a字符串前i个和b字符串前j个,顺序k个相同的子串 长度之和

    dp[i][j][k][1] 表示a[i] != a[j]时,顺序k个相同子串的长度之和

    dp[i][j][k][0] = max(dp[i - 1][j - 1][k][0], dp[i - 1][j - 1][k - 1][1], dp[i - 1][j - 1][k - 1]) + 1;

    dp[i][j][k][1] = max(dp[i - 1][j][k][1], dp[i][j - 1][k][1], dp[i][j][k][0], dp[i - 1][j][k][0], dp[i][j - 1][k][0]);

    渣代码...

     1 //#pragma comment(linker, "/STACK:102400000, 102400000")
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <vector>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <list>
    11 #include <set>
    12 #include <map>
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair <int, int> P;
    16 const int N = 1e3 + 5;
    17 char str1[N], str2[N];
    18 int dp[N][N][11][2];
    19 
    20 int main()
    21 {
    22     int n, m, k;
    23     scanf("%d %d %d", &n, &m, &k);
    24     scanf("%s %s", str1, str2);
    25     for(int i = 1; i <= n; ++i) {
    26         for(int j = 1; j <= m; ++j) {
    27             for(int s = 1; s <= k; ++s) {
    28                 if(str1[i - 1] == str2[j - 1]) {
    29                     dp[i][j][s][0] = max(max(dp[i - 1][j - 1][s - 1][1], dp[i - 1][j - 1][s][0]), 
    30                         dp[i - 1][j - 1][s - 1][0]) + 1;
    31                 }
    32                 dp[i][j][s][1] = max(max(dp[i - 1][j][s][1], dp[i][j - 1][s][1]), 
    33                     max(dp[i - 1][j][s][0], dp[i][j - 1][s][0]));
    34                 dp[i][j][s][1] = max(dp[i][j][s][0], dp[i][j][s][1]);
    35             }
    36         }
    37     }
    38     printf("%d
    ", dp[n][m][k][1]);
    39     return 0;
    40 }
  • 相关阅读:
    HTML5学习笔记-2.HTML基础
    HTML5学习笔记-1.网页入门
    Java学习笔记-8.多线程编程
    Java学习笔记-7.Java IO流
    Java学习笔记-6.Java异常处理
    Java学习笔记-5.常用数据结构
    Java学习笔记-4.继承与多态
    Java学习笔记-3.类与对象
    C语言学习笔记-10.文件
    .net core 中threadpool用法
  • 原文地址:https://www.cnblogs.com/Recoder/p/5888716.html
Copyright © 2011-2022 走看看