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]);
    }

     

  • 相关阅读:
    linux输出信息调试信息重定向
    JDBC复习
    在Java中用for循环打印菱形
    深入.NET框架
    C#中等号左右的文本值交换
    使用集合组织相关数据
    深入类的方法
    值传递和引用传递专题案例
    深入C#数据类型
    Computer Vision Rescources
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7704500.html
Copyright © 2011-2022 走看看