lanqiaoOJ 1456 括号序列

简介: lanqiaoOJ 1456 括号序列

1.括号序列 - 蓝桥云课 (lanqiao.cn)

AcWing 3420. 括号序列(如果一直没能理解这道题,就进来看看这个吧) - AcWing

看不懂的题  下回再战吧

#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std ;
const LL N = 5010, M = 1e9 + 7 ;
typedef long long LL ;
LL n ;
LL f[N][N] ;
char s[N] ;
LL calc(){
  memset(f,0,sizeof f)
  f[0][0] = 1;
  for(int i = 1 ; i <= n ; i ++ ){
    if(s[i] == '(') {
      for(int j = 1 ; j <= n ; j ++){
        f[i][j] = f[i-1][j-1];//不用考虑dp[i][0] 因为dp[i-1][-1]是不合法的情况 不存在 为0
      }
    }
    else {
      f[i][0] = (f[i-1][0] + f[i-1][1]) %M;
      for(int j = 1 ; j <= n ; j ++){
        f[i][j] = (f[i-1][j+1] + f[i][j-1]) % M;
      }
    }
  }
  for(int i = 0 ;i <= n ; i ++){
    if(f[n][i]) return f[n][i];//我们需要的就是长度为len添加括号的合法情况,而从前往后遍历出现的第一个有可能的情况就是需要括号数最少的情况,因为左括号可以加很多个,我们仅需添加最少的情况
  }
}
 
 
int main(){
  scanf("%s" , s+ 1) ;
  n = strlen(s+1) ;
  LL  l = calc() ;
  reverse(s+1, s+1+n) ;
  for(int i = 1 ;i <= n ; i ++){
    if(s[i] == '(') s[i] = ')' ;
    else s[i] = '(' ;
  }
  LL r = calc() ;
  printf("%lld\n" , l*r % M) ;
  return 0 ;[]
  
} 
目录
相关文章
|
5月前
|
机器学习/深度学习 测试技术 Windows
【动态规划】【回文】【字符串】1147. 段式回文
【动态规划】【回文】【字符串】1147. 段式回文
|
5月前
|
Java Go C++
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
49 0
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
LeetCode:有效的括号
LeetCode:有效的括号
47 0
每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题
每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
|
存储 监控 测试技术
力扣20-有效的括号&力扣22-括号生成
力扣20-有效的括号&力扣22-括号生成
96 0
|
算法 前端开发 API
字符串看到 ”回文“ 尝试双指针
字符串看到 ”回文“ 尝试双指针
61 0
|
Java C++
有效的括号(力扣 20)
有效的括号(力扣 20)
|
自然语言处理 算法 数据可视化
有效的括号(LeetCode 20)
有效的括号(LeetCode 20)
56 0