• 51Nod 1092 回文字符串


    最开始毫无头绪,然后参照了一位dalao的博客,思路是一个正序的字符串将其逆序,然后求最长公共子序列(LCS),emm也属于动态规划。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <cstring>
     5 using namespace std;
     6 
     7 const int maxn = 1105;
     8 char s1[maxn];
     9 char s2[maxn];
    10 
    11 int dp[maxn][maxn];
    12 
    13 int main(){
    14     cin >> s1;
    15     int len = strlen(s1);
    16     for (int i = 0,j = len - 1; i < len; i++,j--){
    17         s2[i] = s1[j];
    18     }
    19     memset(dp, 0, sizeof(dp));
    20     for (int i = 1; i <= len; i++){
    21         for (int j = 1; j <= len; j++){
    22             if (s1[i - 1] == s2[j - 1]){
    23                 dp[i][j] = max(dp[i - 1][j - 1] + 1, max(dp[i - 1][j], dp[i][j - 1]));
    24             }
    25             else{
    26                 dp[i][j] = max(dp[i - 1][j - 1], max(dp[i - 1][j], dp[i][j - 1]));
    27             }
    28         }
    29     }
    30     cout << len - dp[len][len] << endl;
    31     return 0;
    32 }
  • 相关阅读:
    NOIP2012 借教室
    bzoj1816 扑克牌
    TYVJ1359 收入计划
    NOIP2015 跳石头
    易错点
    散列表
    数学模板
    12. 17 哈理工网络赛
    哈理工 网络赛
    三角形
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8561599.html
Copyright © 2020-2023  润新知