Đường đi đối xứng trên lưới
Đề bài
Mô tả
Cho một lưới chữ nhật gồm hàng và cột, mỗi ô được điền một chữ cái tiếng Anh thường. Hàng được đánh số từ tới từ trên xuống, cột được đánh số từ tới từ trái sang phải. Ô ở giao của hàng và cột được ký hiệu là .
Bạn xuất phát từ ô và muốn đi đến ô . Tại mỗi bước, từ ô bạn chỉ được di chuyển sang ô hoặc (không được ra ngoài lưới).
Một đường đi được gọi là đẹp nếu dãy chữ cái thu được khi ghi lại nhãn của các ô đi qua (kể cả ô đầu và ô cuối) tạo thành một xâu đối xứng (palindrome) — tức là đọc xuôi và đọc ngược cho cùng một xâu.
Hãy đếm số đường đi đẹp từ đến . Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa một xâu độ dài gồm các chữ cái tiếng Anh thường, mô tả lưới.
Dữ liệu ra
- In ra một số nguyên duy nhất là số đường đi đẹp modulo .
Ràng buộc
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 4 aaab baaa abba |
3 | Có đường đi mà xâu nhãn tạo thành palindrome. |
| 5 2 ab ab cc ba ba |
1 | Chỉ có một đường đi đẹp duy nhất. |
| 1 5 abbba |
1 | Lưới một hàng: xâu đã là palindrome nên có đúng đường đi. |
| 1 5 abbbb |
0 | Lưới một hàng nhưng xâu không phải palindrome — không có đường đi đẹp. |
Bình luận