Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

COEDU023 - Logo đối xứng

Cho một ma trận NxN (N <= 32) trong đó có các số 0 và 1 biểu thị ma trận màu của logo. Vị trí có giá trị bằng 1 là vị trí được tô màu, vị trí có giá trị bằng 0 là vị trí không được tô màu.
Ví dụ ma trận 5x5 như sau:
0 1 1 1 0
0 1 0 1 0
1 0 0 0 1
0 1 0 1 0
0 1 1 1 0
ma trận được biểu diễn dưới dạng hình học như sau:


Lấy điểm trung tâm của logo làm gốc tọa độ, một logo được gọi là đối xứng khi các vị trí tô màu đối xứng với nhau qua trục hoành và trục tung của hệ tọa độ. Từ hình ta có thể thấy logo đối xứng qua trục X và trục Y của hệ tọa độ, vì vậy logo tương ứng với ma trận 5x5 bên trên được gọi là 1 logo đối xứng.
Ví dụ ta có ma trận 5x5 như sau:
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
0 1 0 1 0
0 1 1 1 0
ma trận được biểu diễn dưới dạng hình học như sau:


Logo trên chỉ đối xứng qua trục Y, không đối xứng qua trục X vì vậy logo này không đối xứng.
Cho ma trận biểu thị màu của logo, viết chương trình xác định logo đã cho có đối xứng hay không? Nếu đối xứng in ra YES, không đối xứng in ra NO

Input

Dòng đầu tiên của input là số test case, mỗi test case được viết trên nhiều dòng.
Dòng đầu tiên của test case là kích thước của ma trận N.
N dòng tiếp theo là dữ liệu của ma trận.

Output

In kết quả theo định dạng sau: đầu tiên là kí tự "#", tiếp theo là số thứ tự của test case, tiếp theo là khoảng trắng (dấu cách), tiếp theo là YES nếu logo là đối xứng, NO nếu logo không đối xứng.

Example

Input:
5
2
1 1
1 1
4
0 1 0 1
0 1 1 0
0 1 1 0
0 1 0 1
4
1 0 0 1
0 0 0 0
0 0 0 0
1 0 0 1
5
0 1 1 1 0
0 1 0 1 0
1 0 0 0 1
0 1 0 1 0
0 1 1 1 0
5
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
0 1 0 1 0
0 1 1 1 0

Output:
#1 YES
#2 NO
#3 YES
#4 YES
#5 NO

Được gửi lên bởi:Phòng đào tạo Coedu
Ngày:2022-12-13
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:C C++ 4.3.2 CPP JAVA

hide comments
2023-09-14 09:49:26
#pragma warning(disable : 4996)
#include
using namespace std;
int n; int arr[33][33];
//ham resset
void reset()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
arr[i][j] = 0;
}
}

}
int duyetdoc()//cac diem doi xung theo truc doc
{
//duyetdocle
int ktra = 1;
if ( n % 2 != 0){
for (int i = 0; i < n; i++)
{
int index = n / 2; int a = index - 1; int b = index + 1;
while (a >= 0)
{
if (arr[i][a] != arr[i][b])
{
ktra = 0;
break;
}
a--; b++;
}
if (ktra == 0)break;
}
}
//duyetdocchan
else {
for (int i = 0; i < n; i++)
{
int a = (n / 2 - 1); int b = n / 2;
while (a >= 0)
{
if (arr[i][a] != arr[i][b])
{
ktra = 0;
break;
}
a--; b++;
}
if (ktra == 0) break;
}
}
return ktra;
}

int duyetngang()
{
int ktra = 1;
//duyetngangle
if (n % 2 != 0){
for (int j = 0; j < n; j++)
{
int index = n / 2; int a = index - 1; int b = index + 1;
while (a >= 0)
{
if (arr[a][j] != arr[b][j])
{
ktra = 0;
break;
}
a--; b++;
}
if (ktra == 0)break;
}
}
//duyetngangchan
else {
for (int j = 0; j < n; j++)
{
int a = ((n / 2) - 1); int b = n / 2;
while (a >= 0)
{
if (arr[a][j] != arr[b][j])
{
ktra = 0;
break;
}
a--; b++;
}
if (ktra == 0) break;
}
}
return ktra;
}

int main()
{
//freopen("input.txt", "r", stdin);
int T;
cin >> T;
for (int t = 1; t <= T; t++)
{ // reset toan bo mang
reset();
cin >> n;//ma tran mxn,nxp
//nhap mang
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
{
cin >> arr[i][j];
}
}
//xu ly
int ktraduyetdoc = duyetdoc();
int ktraduyetngang = duyetngang();
// in ra ket qua
if (ktraduyetdoc == 1 && ktraduyetngang == 1)
{
cout << "#" << t << " " << "YES" << endl;
}
else cout << "#" << t << " " << "NO"<< endl;
}
return 0;
}
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.