zoukankan      html  css  js  c++  java
  • hdu4632 Palindrome subsequence 区间DP

    hdu4632 多校4场题目 区间dp
    定义变量 f[i][j],表示 在区间 i到j的回文串的个数(注:i,j为字符串下标)
    则 对于区间i- j 如果s[i]==s[j] f[i][j]=f[i+1][j]+f[i][j-1]-f[i+1][j-1]+f[i +1][j-1]+1=f[i+1][j]+f[i][j+1]+1;
    如果 s[i]!=s[j] 那么 f[i][j]=f[i+1][j]+f[i][j-1]-f[i+1][j-1];
    代码如下:

     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<string>
     6 using namespace std;
     7 #define MAX 1010
     8 #define M 10007
     9 int f[MAX][MAX];
    10 void init()
    11 {
    12     memset(f,0,sizeof(f));
    13     for(int i=0;i<MAX;i++)
    14         f[i][i]=1;
    15 }
    16 int main()
    17 {
    18     string s;
    19     int t;
    20     cin>>t;
    21     int k=1;
    22     while(t--)
    23     {
    24         cin>>s;
    25         int n=s.length()-1;
    26         init();
    27         for(int j=0;j<=n;j++)
    28             for(int i=j-1;i>=0;i--)
    29             {
    30                 if(s[i]==s[j]) f[i][j]=(f[i+1][j]+f[i][j-1]+1)%M;
    31                 else 
    32                 if(s[i]!=s[j]) f[i][j]=(f[i][j-1]+f[i+1][j]-f[i+1][j-1]+M)%M;
    33             }
    34         cout<<"Case "<<k++<<": "<<f[0][n]<<endl;
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    java fastJson
    动态 商品属性
    添加营业时间
    ivew 表格中的input数据改变就会失去焦点
    小程序-setData
    小程序 css3走马灯效果
    iview 表单验证
    vue iview tree checked改变 不渲染的问题
    pl/sql中文乱码
    sql-plus无法连接解决
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/hdu4632.html
Copyright © 2011-2022 走看看