Hướng dẫn giải bài BRACKET

Trùm CUỐI 2019-12-23 2:28:04 2020-09-30 17:33:39

Subtask \#1 :

  • Dùng phương pháp đệ quy. Nhận thấy với mổi dấu hỏi sẽ có nhiều nhất 4 trường hợp điền dấu ngoặc. Do đó có thể đệ quy để bỏ tìm các trường hợp có thể tạo ra dãy ngoặc hợp lệ.
  • Độ phức tạp O(N*4^{10})

Subtask \#2 :

  • Gọi f[l,r] là số cách có thể tạo ra dãy ngoặc hợp lệ từ kí tự thứ l đến r . Ta có công thức f[l,r] = \sum(f[l+1,k-1]*f[k+1][r]) với mọi kí tự k, l\le k\le r sao cho kí tự ngoặc ở vị trí k là ngoặc đóng của ngoặc ở vị trí l
  • Ta có thể dùng quy hoạch động kết hợp đệ quy có nhớ để giải bài toán với độ phức tạp O(N^3)