zoukankan      html  css  js  c++  java
  • Generating Palindromes LightOJ

    Generating Palindromes LightOJ - 1033

    题意:添加最少的字符使得给出的字符串成为回文串。输出添加的字符数。

    方法:常规区间dp。ans[i][j]表示使得ans[i][j]成为回文串最少添加的字符数。如果i和j位置的字符相等那么ans[i][j]=ans[i+1][j-1],否则要么左边去掉一个,要么右边去掉一个,就是$min(get(l,r-1),get(l+1,r))+1$。

    错误记录:和cf607b以及poj1141搞混。那两道题不需要添加字符成为回文串,只需要配对。也就是多个回文串并列也可以,不一定要整个回文串。这道题不一样。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 char a[201];
     6 int n,y,T,TT;
     7 int ans[201][201];
     8 int get(int l,int r)
     9 {
    10     if(l>=r)    return 0;
    11     if(ans[l][r]!=0x3f3f3f3f)    return ans[l][r];
    12     if(a[l]==a[r])    return ans[l][r]=get(l+1,r-1);
    13     return ans[l][r]=min(get(l,r-1),get(l+1,r))+1;
    14 }
    15 int main()
    16 {
    17     scanf("%d",&T);
    18     for(TT=1;TT<=T;TT++)
    19     {
    20         scanf("%s",a+1);
    21         memset(ans,0x3f,sizeof(ans));
    22         printf("Case %d: %d
    ",TT,get(1,strlen(a+1)));
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    Makefile学习
    Tmux使用
    Linux进程管理学习资料
    Linux内存管理学习资料
    Python常用的软件包
    Docker 学习
    Intel处理器技术文档
    Firefly-RK3399笔记
    Linux Kernel API
    ARM 技术文档
  • 原文地址:https://www.cnblogs.com/hehe54321/p/loj-1033.html
Copyright © 2011-2022 走看看