# 1. Tóm tắt đề bài
Cho một bảng số $a$ có kích thước $n \times m$, hãy tìm số lượng bảng con có tổng giá trị bằng $target$.
##### Giới hạn
- $1 \le n, m \le 100$.
- $-1000 \le a_{i, j} \le 1000$.
- $-10^8 \le target \le 10^8$.
# 2. Tóm tắt lời giải
**Độ phức tạp dự tính: $O(m^2 \times n)$**
Cố định hai cột và duyệt qua từng hàng, đưa về bài toán đến số đoạn con $1$ chiều có tổng bằng $target$.
# 3. Lời giải chi tiết
Ta cố định hai cột $c1$ và $c2$ của hình chữ nhật và cần đếm số bảng con có góc trái trên là $(r1, c1)$ và góc phải dưới là $(r2, c2)$ có tổng bằng $target$, hay đếm số cặp $(r1, r2)$ thỏa mãn. Gọi $f[i]$ là tổng của hàng $i$ trong đoạn $[c1..c2]$. Bài toán đã được đưa về trên mảng một chiều như sau:
Cho mảng $f$, hãy đếm số đoạn con của mảng sao cho tổng của nó bằng $target$.
Bài toán trên dễ dàng giải được trong độ phức tạp $O(n)$ bằng cách duy trì mảng cộng dồn và lưu trữ các giá trị cộng dồn trước đó vào một hash map. (Tìm đọc ở [đây](https://www.geeksforgeeks.org/find-subarray-with-given-sum-in-array-of-integers/))
Tổng quát lại, việc cố định hai cột $c1, c2$ mất $O(m^2)$ và giải bài toán trên mảng $1$ chiều mất $O(n)$, tổng quát ta có được một thuật toán chạy trong $O(m^2 \times n)$.
### Độ phức tạp thuật toán
Thời gian: $O(m^2 \times n)$
Bộ nhớ mở rộng: $O(m \times n)$
# 4. Kết luận & Gợi ý mở rộng
- [Kadane Algorithm GFG](https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/)
- [Find Maximum Submatrix](https://www.geeksforgeeks.org/maximum-sum-submatrix/)