trang chủ / bài tập / 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 AB 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 nk.
  • 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0