‹ 上一题 下一题 ›

j06635. 冲刺·括号路径 未做

2000 ms 128 MB 测试点 20 通过率 23% J·算法其他池题暴力枚举记忆化搜索多维动态规划
文件读写输入BracketPath.in输出BracketPath.out

题目描述

有一个 行 列的字符网格,每个格子里写着一个左括号 ( 或右括号 )。

小 Z 从左上角 出发,每次只能向右或向下移动一格,最终到达右下角 。他按经过格子的先后顺序依次记录每个格子中的括号,得到一个长度为 的括号序列。如果这个序列是合法括号序列,就称对应的移动路径为合法路径。

一个括号序列合法,当且仅当:

  • 任意前缀中,左括号数量都不少于右括号数量;
  • 整个序列中,左括号数量等于右括号数量。

请求出从 到 的合法路径数量。两条路径不同,当且仅当它们至少有一步的移动方向不同。

由于答案可能很大,请输出答案对 取模后的结果。

输入格式

第一行包含两个正整数 。

接下来 行,每行包含一个长度为 、仅由 ( 和 ) 组成的字符串,表示括号网格。

输出格式

输出一个整数,表示合法路径数量对 取模后的结果。

样例

输入
2 3
(()
())
输出
3

提示说明

【样例解释】

  • 样例 1:从 到 共有三条路径(右右下、右下右、下右右),三条路径得到的括号序列均为 (()),因此答案为 。
  • 样例 2:任意路径都经过 个格子,长度为奇数的括号序列不可能合法,因此答案为 。

【数据规模与约定】

对于全部数据:。

子任务 测试点 分值 限制
S1 1~2 10
S2 3~5 15 或
S3 6~10 25
S4 11~14 20
S5 15~20 30 无特殊限制

共 20 个测试点,每个测试点 5 分,合计 100 分。

输入
输出

            
答案