Ma trận xoáy ốc (Spoj)

Link bài tập: http://www.spoj.com/PTIT/problems/BCACM11B/

9773. Ma trận xoáy ốc

Mã bài: BCACM11B

Ma trận xoáy ốc được tạo thành bằng cách điền số 1 vào hàng 1 cột 1, sau đó điền số tăng dần theo chiều kim đồng hồ, ví dụ: 

1

2

3

4

5

16

17

18

19

6

15

24

25

20

7

14

23

22

21

8

13

12

11

10

9

Hãy viết chương trình cho biết giá trị tại ô (x, y) của 1 ma trận xoáy ốc vuông kích thước n x n.

Input : Dòng đầu tiên ghi số bộ test, không lớn hơn 100. Mỗi bộ test được ghi trên 1 dòng, bao gồm 3 số n x y (1 ≤ n, x, y ≤ 100)

Output: Với mỗi bộ test, in ra giá trị tại ô hàng x cột y trong ma trận xoáy ốc n x n

Example

Input:

2

5 2 3

4 1 2

Output:

18

2

 

Giải thuật:

Bài này thì giải thuật cũng không quá phức tạp, quan trọng là hiểu ma trận xoáy ốc thế nào.

Ở đây mình sẽ dùng 1 biến d, gán d=n // n là bậc ma trận

Rồi lần lượt cho chạy từ trái qua phải, từ trên xuống dười, từ phải qua trái và cuối cùng là từ dưới lên trên.

Sau khi được 1 lượt thì sẽ thu nhỏ ma trận lại rồi tiếp tục lặp lại các bước cho đến khi được ma trận hoàn chỉnh.

 

Code tham khảo:

 

 

Share
Share