zoukankan      html  css  js  c++  java
  • FZU2030 括号问题(dp)

    Problem 2030 括号问题

    Accept: 398    Submit: 753
    Time Limit: 1000 mSec    Memory Limit : 32768 KB

     Problem Description

    给出一个字符串,其中包括3种字符: ‘(‘, ‘)’, ‘?’.其中?表示这个字符可以是’(‘也可以是’)’. 现在给出字符串S,你可以在’?’处填写’(‘ 或者 ‘)’,当然随意填写得到的序列可能是括号不匹配的。例如”(?”,如果你填写’(‘那么”((“是括号不匹配的! 现在你的任务是确定你有多少种填写方案,使得最终的字符串是括号匹配的!2种方案是不同的,当2种方案中至少存在1个填写字符是不同的。 例如,对于”((??))”,我们可以得到2种方案: “((()))”, “(()())”。

     Input

    数据包含多组测试数据 第一行输入一个字符串S(S的长度不超过16)。

     Output

    输出一个整数,表示合法的填写方案数。

     Sample Input

    ((??))

     Sample Output

    2
     
    思路: dp[i][j]表示第i个位置左右括号抵消后左括号剩下的数量,dp[sz][0]就是答案了
     
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pii;
    const int INF = 1e9;
    const double eps = 1e-6;
    const int N = 20;
    int cas = 1;
    
    char s[N];
    int dp[N][N];
    
    void run()
    {
        int sz = strlen(s+1);
        memset(dp,0,sizeof(dp));
        dp[0][0]=1;
        for(int i=1;i<=sz;i++)
        {
            if(s[i]=='(' || s[i]=='?')
            {
                for(int j=1;j<=sz;j++)
                    dp[i][j]+=dp[i-1][j-1];
            }
            if(s[i]==')' || s[i]=='?')
            {
                for(int j=0;j<=sz;j++)
                    dp[i][j]+=dp[i-1][j+1];
            }
        }
    //    for(int i=1;i<=sz;i++)
    //    {
    //        for(int j=1;j<=sz;j++) cout<<dp[i][j]<<' ';
    //        cout<<endl;
    //    }
        printf("%d
    ",dp[sz][0]);
    }
    
    int main()
    {
        #ifdef LOCAL
        //freopen("case.txt","r",stdin);
        #endif
        while(scanf("%s",s+1)!=EOF)
            run();
        return 0;
    }
  • 相关阅读:
    强化学习的基本迭代方法
    基于文本描述的事务聚类
    学习强化学习之前需要掌握的3种技能
    其它 华硕 ASAU S4100U 系统安装 win10安装 重装系统 Invalid Partition Table 解决
    数据分析 一些基本的知识
    Python 取样式的内容 合并多个文件的样式 自定义样式
    电商 Python 生成补单公司需要的评论格式3
    SpringBlade 本地图片上传 生成缩略图
    SQL Server 字符串截取
    SpringBlade 本地图片上传
  • 原文地址:https://www.cnblogs.com/someblue/p/4047879.html
Copyright © 2011-2022 走看看