poj2955 区间dp

时间:2023-03-08 18:40:51
 //Accepted    200 KB    63 ms
 //区间dp
 //dp[i][j] 从i位到j位能得到的最大匹配数
 //dp[i][j]=max(dp[i+1][j-1] (s[i-1]==s[j-1]),dp[i][k]+dp[k+1][j])i<=k<j
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 int dp[imax_n][imax_n];
 char s[imax_n];
 int n;
 int max(int a,int b)
 {
     return a>b?a:b;
 }
 int isMatch(char ch1,char ch2)
 {
     ;
     ;
     ;
 }
 void Dp()
 {
     ;i<=n;i++)
     dp[i][i]=;
     ;l<=n;l++)
     {
         ;i<=n;i++)
         {
             ;
             if (j>n) break;
             dp[i][j]=;
             ],s[j-])) dp[i][j]=dp[i+][j-]+;
             for (int k=i;k<j;k++)
             dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+][j]);
         }
     }
     printf(][n]);
 }
 int main()
 {
     ]!='e')
     {
         n=strlen(s);
         Dp();
     }
     ;
 }