• uva 1362(区间dp+计数)


    构思上还是比较简单,我们可以递归的思考问题。每一个字符串都包含三部分根节点str[0]左子树str[1]-str[k]与右子树str[k+1]-str[n-1]根据乘法原理

    整棵树的方案数=左子树方案数*右子树方案数。这样一分析我们可以看到了这是一个区间上动态规划的问题。

    剩下来的就简单了,先套一下模版三层循环,再把式子列上去就ok了。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #define ll long long
     6 #define MOD 1000000000
     7 #define LEN 310
     8 using namespace std;
     9 
    10 ll dp[LEN][LEN];
    11 char str[LEN];
    12 int n;
    13 
    14 int main()
    15 {
    16 //    freopen("in.txt", "r", stdin);
    17 
    18     while(scanf("%s", str)!=EOF){
    19         memset(dp, 0, sizeof dp);
    20         n = strlen(str);
    21         for(int i=0; i<n; i++) dp[i][i] = 1;
    22         for(int k=1; k<n; k++){
    23             for(int i=0; i+k<n; i++){
    24                 int j = i+k;
    25                 for(int x=i+2; x<=j; x++){
    26                     if(str[x]==str[j] && str[i+1]==str[x-1] && str[i]==str[x])
    27                         dp[i][j] += dp[i+1][x-1]*dp[x][j]%MOD;
    28                     dp[i][j] %= MOD;
    29                 }
    30             }
    31         }
    32         printf("%lld
    ", dp[0][n-1]%MOD);
    33     }
    34     return 0;
    35 }
    View Code
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    java上传1t文件
    上传1T文件
    超过20g的文件+上传
    文件批量下载
    下载超大文件的控件
    Java上传大文件夹
    Java超大文件上传解决办法
    vue+大文件上传控件
    cocos2dx3.1 win7安装步骤及编译到安桌
    Muller’s method (website)
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3413653.html
Copyright © 2020-2023  润新知