內容
現在給你一個正方形矩陣M。
M矩陣的元素為Mij:{0 < i < n,0 < j < n}。
在這個問題中,您必須找出給定的矩陣是否對稱(symmetric)。
定義:對稱矩陣所有元素都是非負的並且相對於該矩陣的中心對稱。
任何其他矩陣都被認為是非對稱的。
你要做的就是判斷這個矩陣是否對稱。
矩陣內的元素範圍為-2^32 <= Mij <= 2^32 且 0 < n <= 100。
輸入說明
輸入的第一行包含一個數字T (T <= 300),代表測資的數量。
每組測試資料的第一行包含兩個字元一個整數n,n代表這個正方矩陣的維度。
接下來的n行即為這個矩陣內的元素數值。
每一列i有n個數字,第i列的第j個數字即是Mij。
輸出說明
對每一筆測試資料輸出一行"Test #t: S",t為第幾筆測試資料的編號,S為答案字串。
如果輸入的矩陣是對稱矩陣,S = "Symmetric"。
如果輸入的矩陣不是對稱矩陣,S = "Non-symmetric"。
# 讀取測試案例的數量 T
T = int(input())
# 迭代每個測試案例
for Case in range(T):
# 讀取矩陣的維度 n
n = int(input().split(" = ")[1])
# 初始化一個空的矩陣 M
M = list()
# 讀取矩陣的元素並將其存入 M 中
for i in range(n):
M.append(list(map(int, input().split())))
# 判斷矩陣是否對稱,初始化 is_Symmetric 為 True
is_Symmetric = True
# 計算矩陣的中心索引
center = n // 2
# 遍歷矩陣的上半部分
for i in range(n):
for j in range(i + 1):
# 檢查對稱位置的元素是否小於 0,如果是,矩陣不對稱
if M[i][j] < 0 or M[n - 1 - i][n - 1 - j] < 0:
is_Symmetric = False
break
# 檢查對稱位置的元素是否相等,如果不相等,矩陣不對稱
if M[i][j] != M[n - 1 - i][n - 1 - j]:
is_Symmetric = False
break
# 如果矩陣不對稱,跳出迴圈
if is_Symmetric is False:
break
# 輸出測試案例的結果
if is_Symmetric:
print(f"Test #{Case + 1}: Symmetric.")
else:
print(f"Test #{Case + 1}: Non-symmetric.")