矩陣變換(逆順 中心 不變)

2022-09-04 10:51:12 字數 1728 閱讀 9723

描述

有乙個n x n(n為奇數,且1 <= n <= 10)的矩陣,矩陣中的元素都是字元。這個矩陣可能會按照如下的幾種變幻法則之一進行變幻(只會變幻一次)。 

現在給出乙個原始的矩陣,和乙個變幻後的矩陣,請編寫乙個程式,來判定原始矩陣是按照哪一種法則變幻為目標矩陣的。 

1. 按照順時針方向旋轉90度; 

如:

1 2 3        7 4 1

4 5 6 變幻為  8 5 2

7 8 9        9 6 3

2. 按照逆時針方向旋轉90度; 

如:

1 2 3        3 6 9

4 5 6 變幻為  2 5 8

7 8 9        1 4 7

3. **元素不變(如下例中的 5),其他元素(如下例中的3)與「以**元素為中心的對應元素」(如下例中的7)互換; 

如:

1 2 3       9 8 7

4 5 6 變幻為 6 5 4

7 8 9       3 2 1

4. 保持原始矩陣,不變幻; 

5. 如果 從原始矩陣 到 目標矩陣 的變幻,不符合任何上述變幻,請輸出5

輸入第一行:矩陣每行/列元素的個數 n;

第二行到第n+1行:原始矩陣,共n行,每行n個字元;

第n+2行到第2*n+1行:目標矩陣,共n行,每行n個字元;輸出只有一行,從原始矩陣 到 目標矩陣 的所採取的 變幻法則的編號。樣例輸入

5

a b c d e

f g h i j

k l m n o

p q r s t

u v w x y

y x w v u

t s r q p

o n m l k

j i h g f

e d c b a

樣例輸出

3
#include #include using namespace std;

const int n = 100;

char a[n][n], b[n][n];

bool fun1(int n); //順時針旋轉

bool fun2(int n); //逆時針旋轉

bool fun3(int n); //中心對稱

bool fun4(int n); //重合

int main()

} for (int i=0; i> b[i][j];

} }if (fun1(n))

cout << 1 << endl;

else if (fun2(n))

cout << 2 << endl;

else if (fun3(n))

cout << 3 << endl;

else if (fun4(n))

cout << 4 << endl;

else

cout << 5 << endl;

return 0; }

bool fun1(int n) //順時針旋轉

} return 1;}

bool fun2(int n) //逆時針旋轉

} return 1;}

bool fun3(int n) //中心對稱

} return 1;}

bool fun4(int n) //重合

} return 1;

}

矩陣中的透視變換

u,v是原始左邊,對應得到變換後的座標x,y,其中 變換矩陣 重寫之前的變換公式可以得到 所以,已知變換對應的幾個點就可以求取變換公式。反之,特定的變換公式也能新的變換後的。簡單的看乙個正方形到四邊形的變換 變換的4組對應點可以表示成 根據變換公式得到 定義幾個輔助變數 求解出的變換矩陣就可以將乙個...

python 逆矩陣 Python中的矩陣與逆矩陣

對於我正在做的乙個專案,我使用networkx adj matrix 函式將使用networkx建立的圖形分解為鄰接矩陣。然而,我遇到的乙個問題是,當我試圖求矩陣的逆時,分解的每乙個圖都會產生以下錯誤。在str traceback most recent call last file c eclip...

Numpy 中的矩陣求逆

import numpy as np a np.array 1,2 3,4 初始化乙個非奇異矩陣 陣列 print np.linalg.inv a 對應於matlab中 inv 函式 矩陣物件可以通過 i 更方便的求逆 a np.matrix a print a.i import numpy as ...