Số lượng dãy ngoặc đúng

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 2.0s
Memory limit: 195M
Input: stdin
Output: stdout

Author:
Problem type

Biểu thức ngoặc là xâu chỉ gồm các ký tự ( hoặc ) . Biểu thức ngoặc đúng và bậc của biểu thức ngoặc được định nghĩa một cách đệ qui như sau:

• Biểu thức rỗng là biểu thức ngoặc đúng và có bậc bằng 0,

• Nếu A là biểu thức ngoặc đúng có bậc bằng k thì (A) cũng là một biểu thức ngoặc đúng có bậc bằng k+1,

• Nếu A và B là hai biểu thức ngoặc đúng và có bậc tương ứng là k1 và k2 thì AB cũng là một biểu thức ngoặc đúng có bậc bằng max(k1,k2).

Ví dụ, ()(()) là một biểu thức ngoặc đúng có bậc bằng 2 còn (()(())) là một biểu thức ngoặc đúng và có bậc bằng 3.

Cho số nguyên K và xâu S là một xâu chỉ gồm các ký tự ( , ) và ? , hãy đếm số cách cách thay các ký tự ? trong xâu S thành ký tự ( hoặc ) để nhận được xâu T là biểu thức ngoặc đúng có bậc bằng K.

Input

• Dòng đầu chứa số nguyên dương K.

• Dòng thứ hai chứa xâu S chỉ gồm các ký tự ( , ) và ? .

Giới hạn

Subtask 1 (50%) độ dài xâu S không vượt quá 20.

Subtask 2 (50%) độ dài xâu S không vượt quá 200.

Output

• Hãy in ra đáp án trên một dòng.

Test ví dụ:

Sample Input 1
2
????(?
Sample Output 1
1
Sample Input 2
1
((???(
Sample Output 2
0
Sample Input 3
2
((???()???(?
Sample Output 3
4

Comments

Please read the guidelines before commenting.


There are no comments at the moment.