[Buổi 12][Củng cố ma trận][WS] Bài 1: Matrix Analyzer 1.0
Matrix Analyzer 1.0
Bối cảnh
Đây là sản phẩm tổng hợp của Module 03: một công cụ phân tích và biến đổi ma trận.
Chương trình đọc ma trận, thực hiện một phép hoán đổi theo lệnh, sau đó tạo báo cáo từ trạng thái ma trận mới.
Yêu cầu
- Đọc rows, cols và ma trận.
- Đọc
type x y: nếu type=1 thì đổi hàng x,y; nếu type=2 thì đổi cột x,y; type=0 thì không đổi. - Sau biến đổi, in tổng toàn ma trận.
- In tổng biên.
- In hàng có tổng lớn nhất:
BEST_ROW index sum. - Nếu ma trận vuông, in
SYMMETRIC YES/NOvàDIAGONAL_UNION sum; nếu không vuông, inSYMMETRIC N/AvàDIAGONAL_UNION N/A. - In ma trận cuối cùng.
Yêu cầu tổ chức code
Không dùng vector/STL. Mọi phép biến đổi thao tác trên mảng 2 chiều tĩnh.
Online Judge chủ yếu chấm output. Yêu cầu tổ chức code giúp bảo đảm học viên luyện đúng kỹ năng của buổi học.
Input
Dòng 1: rows cols; ma trận; dòng cuối type x y (với type=0, x y có thể là 0 0).
Output
Nhiều dòng theo định dạng yêu cầu.
Ràng buộc
1 ≤ rows,cols ≤ 50; index swap hợp lệ.
Ví dụ 1
Input
2 2
1 2
2 1
0 0 0
Output
SUM 6
BORDER 6
BEST_ROW 0 3
SYMMETRIC YES
DIAGONAL_UNION 6
MATRIX
1 2
2 1
Giải thích
Không swap. Ma trận đối xứng. Tổng=6, biên=6, hai hàng đều tổng 3 nên chọn hàng 0. Hợp hai chéo của 2×2 gồm cả 4 ô nên bằng 6.
Ví dụ 2
Input
2 3
1 2 3
4 5 6
1 0 1
Output
SUM 21
BORDER 21
BEST_ROW 0 15
SYMMETRIC N/A
DIAGONAL_UNION N/A
MATRIX
4 5 6
1 2 3
Giải thích
Swap hàng 0 và 1 làm ma trận thành 4 5 6 / 1 2 3. Tổng không đổi 21. Vì ma trận chữ nhật nên symmetry/diagonal union là N/A.
Thông tin học tập
- Module: M03
- Buổi: B12
- Loại bài: WORKSHOP
- Độ khó: Medium
- Concepts: 2D static arrays, border sum, row analysis, row/column swap, symmetry, diagonal union
- Giới hạn kiến thức: B01-B12
- Time limit: 2 second(s)
- Memory limit: 256 MB
- Point: 100
Comments