trang chủ / đề bài / gr03_knight

Quân mã

Đề bài

Mô tả

Một bàn cờ có n hàng và n cột, hàng đánh số từ 1 đến n từ trên xuống, cột đánh số từ 1 đến n từ trái sang. Mỗi ô là ô trống (.) hoặc ô cấm (#).

Một quân mã đứng ở ô (r1,c1) và cần đi tới ô (r2,c2). Mỗi nước, quân mã đi từ ô (r,c) tới một trong 8 ô (r±1,c±2) hoặc (r±2,c±1), với điều kiện ô đó nằm trong bàn cờ và là ô trống. Quân mã nhảy qua các ô ở giữa, nên các ô cấm nằm giữa không cản đường.

Hãy tính số nước đi ít nhất để quân mã tới ô đích, hoặc cho biết không thể tới được.

Dữ liệu vào

  • Dòng đầu tiên chứa năm số nguyên n, r1, c1, r2, c2.
  • n dòng tiếp theo, mỗi dòng là một xâu độ dài n gồm các ký tự . và # mô tả một hàng của bàn cờ.

Dữ liệu bảo đảm ô (r1,c1) và ô (r2,c2) là ô trống.

Dữ liệu ra

In ra số nước đi ít nhất, hoặc −1 nếu quân mã không thể tới ô đích.

Ràng buộc

  • 1≤n≤400
  • 1≤r1,c1,r2,c2≤n

Ví dụ

Input Output Giải thích
5 1 1 5 5
.....
.#...
.....
...#.
.....
4 Ví dụ một cách đi: (1,1)→(3,2)→(1,3)→(3,4)→(5,5). Không thể tới trong ít hơn 4 nước.
3 1 1 2 2
...
...
...
-1 Trên bàn 3×3, quân mã không bao giờ tới được ô chính giữa.

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