zoukankan      html  css  js  c++  java
  • 密码脱落

    (不了解区间DP的同学可以看一看 这些题,一步一步摸索)

    X星球的考古学家发现了一批古代留下来的密码。 
    这些密码是由A、B、C、D 四种植物的种子串成的序列。 
    仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。 
    由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

    你的任务是: 
    给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

    输入一行,表示现在看到的密码串(长度不大于1000) 
    要求输出一个正整数,表示至少脱落了多少个种子。

    例如,输入: 
    ABCBA 
    则程序应该输出: 
    0

    再例如,输入: 
    ABECDCBABC 
    则程序应该输出: 
    3

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<memory>
    using namespace std;
    const int maxn=1010;
    int dp[maxn][maxn];
    char c[maxn];
    int main()
    {
        int i,j,k,L;
        scanf("%s",c+1);
        L=strlen(c+1);
        for(i=L-1;i>=1;i--)
         for(j=i+1;j<=L;j++)
         {
             dp[i][j]=dp[i+1][j]+1;
             dp[i][j]=min(dp[i][j],dp[i][j-1]+1);
             if(c[i]==c[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
         }
        printf("%d
    ",dp[1][L]);
    }

     

  • 相关阅读:
    Makefile:2:*** missing separator. Stop.
    Code笔记之:对使用zend加密后的php文件进行解密
    Apache 访问控制
    leetcode-21-合并两个有序链表
    tcp四次挥手的过程
    实现一个LRU算法
    redis为什么快
    二月春日
    你的支持会鼓励我更积极地创作
    静夜思·静夜祈愿
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7704500.html
Copyright © 2011-2022 走看看