close
Content

現在給你一個正方形矩陣M。
M矩陣的元素為Mij:{0 < i < n,0 < j < n}。
在這個問題中,您必須找出給定的矩陣是否對稱(symmetric)。

定義:對稱矩陣所有元素都是非負的並且相對於該矩陣的中心對稱。
任何其他矩陣都被認為是非對稱的。

你要做的就是判斷這個矩陣是否對稱。
矩陣內的元素範圍為-2^32 <= Mij <= 2^32  且 0 < n <= 100。

Input

輸入的第一行包含一個數字T (T <= 300),代表測資的數量。
每組測試資料的第一行包含兩個字元一個整數n,n代表這個正方矩陣的維度。
接下來的n行即為這個矩陣內的元素數值。
每一列i有n個數字,第i列的第j個數字即是Mij。

Output

對每一筆測試資料輸出一行"Test #t: S",t為第幾筆測試資料的編號,S為答案字串。
如果輸入的矩陣是對稱矩陣,S = "Symmetric"。
如果輸入的矩陣不是對稱矩陣,S = "Non-symmetric"。

Sample Input #1
2
N = 3
5 1 3
2 0 2
3 1 5
N = 3
5 1 3
2 0 2
0 1 5
Sample Output #1
Test #1: Symmetric.
Test #2: Non-symmetric.

python:

n=int(input())
for t in range(n):
    p=True
    no=list(input()[::1])
    n=int(''.join(no[4:]))
    #print(no)
    arr=[]
    for i in range(n):
        arr00=list(map(int,input().split()))
        arr.append(arr00)
    #print(arr)
    for i in range(n):
        for j in range(n):
            """
            其實這邊我寫i-n,j-n,他會有重複的狀況
            像是arr[i][j]為左上角時,arr[n-1-i][n-1-j]為右下角,
            但他又會去計算到arr[i][j]為右下角時,arr[n-1-i][n-1-j]為左上角,(重複!!!!)

            所以努以寫成
            for i in range(n):
                for j in range(i,n):
            就可以避免重複了
            """
            if arr[i][j]<0 or arr[n-1-i][n-1-j]<0:
                p=False
                break
            if arr[i][j]!=arr[n-1-i][n-1-j]:
                p=False
                break
        if p==False:break
    if p==False:print(f'Test #{t+1}: Non-symmetric.')
    else:print(f'Test #{t+1}: Symmetric.')

arrow
arrow
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()