zoukankan      html  css  js  c++  java
  • 11584

    题意分析:

      题目比较容易理解,以d[i]表示前i个字符的最优解,状态转移方程 d[i]=min{d[j]+1| [j+1~i]为回文串}

    代码如下:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 const int maxs=1000;
     7 int is[maxs+5][maxs+5];
     8 int dp[maxs];
     9 char s[maxs];
    10 void pre_solve(){
    11     memset(is, 0, sizeof is);
    12     int len=strlen(s);
    13     for(int i=0;i<len;i++){
    14         int l=i;
    15         int r=i;
    16         while(l>=0&&r<len){
    17             if(s[l]==s[r])
    18                 is[l][r]=1;
    19             else break;
    20             l--;
    21             r++;
    22         }
    23     }
    24     for(int i=0;i<len-1;i++){
    25         int l=i;
    26         int r=i+1;
    27         while(l>=0&&r<len){
    28             if(s[l]==s[r])
    29                 is[l][r]=1;
    30             else break;
    31             l--;
    32             r++;
    33         }
    34     }
    35 }
    36 int main(){
    37     int T;
    38     scanf("%d",&T);
    39     while(T--){
    40         scanf("%s",s);
    41         pre_solve();
    42         dp[0]=0;
    43         int len=strlen(s);
    44         for(int i=1;i<=len;i++){
    45             dp[i]=1<<30;
    46             for(int j=0;j<i;j++){
    47                 if(is[j][i-1])
    48                     dp[i]=min(dp[i],dp[j]+1);
    49             }
    50         }
    51         printf("%d
    ",dp[len]);
    52     }
    53 }
  • 相关阅读:
    TCP流量控制和拥塞控制
    延迟确认和Nagle算法
    浅谈TCP三次握手和四次挥手
    中介者模式
    代理模式
    装饰者模式
    生成器模式(构建者模式)
    策略模式
    模板方法模式
    抽象工厂模式
  • 原文地址:https://www.cnblogs.com/Kiraa/p/5513041.html
Copyright © 2011-2022 走看看