zoukankan      html  css  js  c++  java
  • UVa 11151 Longest Palindrome 字符串dp

    Write a program to determine the length of the longest palindrome you can get from a string.

    Input and Output

    The first line of input contains an integer T (≤ 60). Each of the next T lines is a string, whose length is always less than 1000.

    For ≥90% of the test cases, string length ≤ 255.

    For each input string, your program should print the length of the longest palindrome you can get by removing zero or more characters from it.

    Sample Input

    2
    ADAM
    MADAM
    

    Sample Output

    3
    5
    


    Problemsetter: Raymond Chun
    ---------------

    听说有空串,所以必须用gets()

    ---------------

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    char s[1111];
    int f[1111][1111];
    int n;
    
    int dfs(int l,int r)
    {
        if (f[l][r]!=-1) return f[l][r];
        if (r-l<1) return 0;
        int ret=0;
        if (s[l]==s[r])
        {
            ret=dfs(l+1,r-1);
        }
        else
        {
            ret=min( dfs(l+1,r), dfs(l,r-1) )+1;
        }
        f[l][r]=ret;
        return ret;
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        getchar();
        while (T--)
        {
            memset(f,-1,sizeof(f));
            //scanf("%s",s+1);
            gets(s+1);
            n=strlen(s+1);
            int ans=dfs(1,n);
            printf("%d\n",n-ans);
        }
        return 0;
    }
    





  • 相关阅读:
    15、线程
    17、lambda表达式
    16、sockect
    14、反射(reflect)
    13、集合2
    java 基本类型、包装类、字符串之间的转换
    13、集合1
    12、NIO、AIO、BIO二
    12、NIO、AIO、BIO一
    11、流与文件
  • 原文地址:https://www.cnblogs.com/cyendra/p/3226389.html
Copyright © 2011-2022 走看看