陣列4——二維陣列1——將矩陣順時針旋轉90度
阿新 • • 發佈:2018-12-22
【定義】
二維陣列也稱為矩陣(Matrix),關於矩陣的演算法經常在各種考試及面試中出現,它主要考查被測試者的邏輯思維能力、下標的靈活應用及對C語言的掌握程度,這種題目通常有較高的難度,通常需要二重迴圈實現。經典的矩陣演算法有將矩陣旋轉90度、魔方陣、拉丁方陣、蛇形方陣、內螺旋矩陣、外螺旋矩陣、逆螺旋矩陣。
【問題】將矩陣順時針旋轉90度
如圖
【分析】
這題是北京航天大學考研試題。對於任意N階方陣,如果N是偶數,則矩陣構成N/2圈;如果N是奇數,則矩陣構成(N-1)/2。將矩陣順時針旋轉90度,就是將每圈的元素在四個方位依次輪換位置。例如,對於5×5矩陣來說,將6放在原來4的位置,4放在原來20的位置,20放在原來22的位置,22放在原來6的位置。這需要將這4個元素依次交換位置,具體交換過程
如圖
從圖可以看出,交換元素的公式如下圖:
main.cpp
#include <iostream> using namespace std; #include <iomanip> #define MAX 20 void main() { int a[MAX][MAX], i, j, t, p = 1, n; cout << "請輸入矩陣的階:" << endl; cin >> n; cout << "*******旋轉前的矩陣*******"<<endl; for (i = 1; i <= n;i++) { for (j = 1; j <= n;j++) { a[i][j] = p++; cout << setw(4) << a[i][j]; } cout << endl; } cout << "*******旋轉後的矩陣*******" << endl; for (i = 1; i <= n / 2;i++) { for (j = i; j < n - i + 1;j++) { t = a[i][j]; a[i][j] = a[n - j + 1][i]; a[n - j + 1][i] = a[n - i + 1][n - j + 1]; a[n - i + 1][n - j + 1] = a[j][n - i + 1]; a[j][n - i + 1] = t; } for (i = 1; i <= n;i++) { for (j = 1; j <= n;j++) { cout << setw(4) << a[i][j]; } cout << endl; } } system("pause"); }
結果: