描述
有乙個n x n(n為奇數,且1 <= n <= 10)的矩陣,矩陣中的元素都是字元。這個矩陣可能會按照如下的幾種變幻法則之一進行變幻(只會變幻一次)。
現在給出乙個原始的矩陣,和乙個變幻後的矩陣,請編寫乙個程式,來判定原始矩陣是按照哪一種法則變幻為目標矩陣的。
1. 按照順時針方向旋轉90度;
如:
1 2 3 7 4 14 5 6 變幻為 8 5 2
7 8 9 9 6 3
2. 按照逆時針方向旋轉90度;
如:
1 2 3 3 6 94 5 6 變幻為 2 5 8
7 8 9 1 4 7
3. **元素不變(如下例中的 5),其他元素(如下例中的3)與「以**元素為中心的對應元素」(如下例中的7)互換;
如:
1 2 3 9 8 74 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 ...