trang chủ / đề bài / dayngoac

Dãy ngoặc

Đề bài

Mô tả

Một dãy ngoặc hợp lệ là một xâu ký tự gồm các ký tự (, ), [, ], {, } thỏa mãn:

  • Xâu rỗng là dãy ngoặc hợp lệ.
  • Nếu A là dãy ngoặc hợp lệ thì (A), [A], {A} cũng là dãy ngoặc hợp lệ.
  • Nếu A và B là các dãy ngoặc hợp lệ thì AB cũng là dãy ngoặc hợp lệ.

Độ sâu lồng nhau của một dãy ngoặc hợp lệ là số lượng cặp ngoặc lồng nhau nhiều nhất tại bất kỳ vị trí nào trong xâu.

Xét tất cả các dãy ngoặc hợp lệ có độ dài n và độ sâu lồng nhau không quá k. Sắp xếp các dãy này theo thứ tự từ điển với quy ước: ( < ) < [ < ] < { < }.

Yêu cầu: Cho một dãy ngoặc hợp lệ S có độ dài n và độ sâu lồng nhau không quá k, hãy tìm thứ hạng của S trong danh sách trên (đánh số từ 1).

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n và k.
  • Dòng thứ hai chứa xâu S có độ dài n.

Dữ liệu ra

  • Ghi ra một số nguyên duy nhất là thứ hạng của xâu S.

Ví dụ

Input Output Giải thích
4 2
()()
1 "()()" là dãy ngoặc hợp lệ nhỏ nhất theo thứ tự từ điển có độ dài 4 và độ sâu không quá 2.
4 2
(())
2 "(())" đứng thứ 2 sau "()()".
2 1
[]
2 Các dãy hợp lệ độ dài 2, độ sâu ≤1: "()", "[]", "{}". Xâu "[]" đứng thứ 2.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0