题目连接
题意

题干已经说的很清楚
给你两个括号序列,不保证合法,求有多少种不同的方法可以将两个括号序列合并成一个合法的括号序列
合并的时候不能改变各自序列原先的顺序

思路

dp[i][j] 表示s1串前i个和s2串前j个,左括号大于等于右括号,还有机会变成合法括号序的方案数。
pre[i][j] 左括号表示+1右括号-1,s1和s2的前缀和。

最后检查一下是否pre[len1][len2] 为0即可,0表示合法。
滚动数组优化空间否则会MLE

代码
#include <bits/stdc++.h>
using namespace std;char s1[2505], s2[2505];
int dp[2][2505], pre[2][2505], mod = 1e9+7;int main()
{scanf("%s%s",s1+1,s2+1);int len1 = strlen(s1+1), len2 = strlen(s2+1), cur = 0;dp[cur][0] = 1;for(int i = 0; i <= len1; ++i){if(i) cur ^= 1;if(i) memset(dp[cur], 0, sizeof(dp[cur]));for(int j = 0; j <= len2; ++j){if(i == 0 && j == 0) continue;if(j) pre[cur][j] = pre[cur][j-1] + (s2[j] == '(' ? 1 : -1);else pre[cur][j] = pre[cur^1][j] + (s1[i] == '(' ? 1 : -1);if(pre[cur][j] < 0) continue;if(i) dp[cur][j] += dp[cur^1][j];if(j) dp[cur][j] += dp[cur][j-1];dp[cur][j] %= mod;}}if(pre[cur][len2] == 0) printf("%d\n",dp[cur][len2]);else printf("0\n");return 0;
}

牛客网 牛牛数括号(DP)相关推荐

  1. 牛客网--关于合法括号序列判断

    牛客网--关于合法括号序列判断 题目描述 代码 题目描述 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串 ...

  2. 牛客网——牛牛的通勤

    帮朋友写个题解 目录 前言 一.牛牛的通勤 描述 输入描述: 输出描述: 总结 前言 最后一场雨停歇之后,我出发了.空气因为我的目光而发亮.秘密小径也露出了轮廓.树林静静地等候--他们听说过我和你的约 ...

  3. 牛客网--牛牛的闹钟

    牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床.从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床 输入描述: 每个输入包含一个 ...

  4. 牛客网--牛牛找工作

    题目描述 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作, ...

  5. 牛客网-最小花费【dp】

    十分钟找出递推关系式,10分钟wa我可真是个憨憨 ,状态转移其实蛮明显的, 记dp[i]为从a到第i个车站的最小花费 从起始位置a开始不断向前寻找,每次前向找到所有 距 离 ≤ l 3 距离\leq ...

  6. 牛客网牛牛换瓷砖的编程题

    牛牛喜欢彩色的东西,尤其是彩色的瓷砖.牛牛的房间内铺有L块正方形瓷砖.每块砖的颜色有四种可能:红.绿.蓝.黄.给定一个字符串S, 如果S的第i个字符是'R', 'G', 'B'或'Y',那么第i块瓷砖 ...

  7. codeforces(牛客网dp专题,排序)

    链接:https://ac.nowcoder.com/acm/problem/21314 来源:牛客网 牛牛正在打一场CF 比赛时间为T分钟,有N道题,可以在比赛时间内的任意时间提交代码 第i道题的分 ...

  8. 牛客网:牛牛送冰淇淋

    链接:https://ac.nowcoder.com/acm/contest/6630/C 来源:牛客网 牛牛公司老板让牛牛负责m个冰激凌的运输.运输车的冷库只够装n个冰激凌,一次运输需要t分钟,返回 ...

  9. 牛客网——10进制 VS 2进制

    题目描述 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数.     例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10 ...

最新文章

  1. 谈谈Linux内核驱动的coding style
  2. 从传统运维到云运维演进历程之软件定义存储(一)
  3. push notification for iphone
  4. [T-ARA][HUE]
  5. 深刻理解Python中的元类(metaclass)以及元类实现单例模式
  6. header+php+xiazai_php使用header函数实现文件下载
  7. 对二维数组自定义排序、Treemap自定义排序、priorityqueue自定义排序
  8. ajax大数据导入的一系列问题处理
  9. Encapsulate Field
  10. 硅谷35岁以后的程序员都在做什么?
  11. Java Timetask 无缘无故停止
  12. linux虚拟机上挂载U盘
  13. 10款开源网上教学课程管理系统
  14. 分享四款H5怀旧小游戏魔塔+伏魔记+三国霸业+寻仙纪
  15. c语言int temp什么意思,C中的temp是什么意思?
  16. sql server 常用工具
  17. 1. 初识网页标记语言HTML—HTML简介
  18. gedit 编辑器使用教程
  19. python如何提取word文档某个段落所有内容(包括段落、表格、图片一并提取)
  20. 聊聊大学室友在 TikTok 的工作和生活体验

热门文章

  1. Weblogic10.3.6反序列化漏洞补丁(3L3H)升级方案
  2. 银杏树Python画图
  3. 80后IT创业启示 [CSDN]
  4. html如果修改鼠标指针,改网页鼠标指针、改指定元素指针(2)——小白也能自绘指针...
  5. VMware:no boot filename received解决方法
  6. Android录音文件
  7. prometheus监控看这一篇就够了,持续跟新
  8. PLSQL Developer12 破解注册码
  9. WInXp ISO 文件安装
  10. 161018、springMVC中普通类获取注解service方法