矩陣旋轉——(c語言)

來源:互聯網
上載者:User
n階矩陣旋轉矩陣的順時針旋轉基本有四種情況:
  • 0度
  • 90度
  • 180度
  • 270度,相當於逆向的90度

演算法思路矩陣的計算主要是考慮下標之間的變換,先上一張我在紙上分析的圖(ps:好大啊,沒有壓縮)以aij為例,i,j均從1開始計數90度旋轉:

  • 列號變為行號
  • (n - 行號 + 1)變成列號
  • 規律: a[i][j] = b[j][n - i + 1]

180度旋轉:

  • (n - 行號 + 1)變為行號
  • (n - 列號 + 1)變為列號
  • 規律:a[i][j] = b[n - i + 1][n - j + 1]

270度旋轉(相當於逆時針旋轉90度):

  • 行號變為列號
  • (n - 列號 + 1)變為行號
  • 規律:a[i][j] = b[n - j + 1][i]

acm題目

題目描述:

任意輸入兩個9階以下矩陣,要求判斷第二個是否是第一個的旋轉矩陣,如果是,輸出旋轉角度(0、90、180、270),如果不是,輸出-1。
要求先輸入矩陣階數,然後輸入兩個矩陣,每行兩個數之間可以用任意個空格分隔。行之間用斷行符號分隔,兩個矩陣間用任意的斷行符號分隔。

輸入:

輸入有多組資料。
每組資料第一行輸入n(1<=n<=9),從第二行開始輸入兩個n階矩陣。

輸出:

判斷第二個是否是第一個的旋轉矩陣,如果是,輸出旋轉角度(0、90、180、270),如果不是,輸出-1。

如果旋轉角度的結果有多個,則輸出最小的那個。

範例輸入:
31 2 34 5 67 8 97 4 18 5 29 6 3
範例輸出:
90
AC代碼(c語言實現)
#include <stdio.h>#include <stdlib.h>#define len 10int switchMatrix(int (*a)[len], int (*b)[len], int n);int main(){int i, j, n, angle;int a[len][len], b[len][len];while(scanf("%d", &n) != EOF){//接收第一個矩陣for(i = 0; i < n; i ++){for(j = 0; j < n; j ++){scanf("%d", *(a + i) + j);}}//接收第二個數組for(i = 0; i < n; i ++){for(j = 0; j < n; j ++){scanf("%d", *(b + i) + j);}}//矩陣比較angle = switchMatrix(a, b, n);printf("%d\n", angle);}return 0;}int switchMatrix(int (*a)[len], int (*b)[len], int n){int angle, i, j;for(angle = 0, i = 0; i < n; i ++){for(j = 0; j < n; j ++){if(angle == 0){if(a[i][j] == b[i][j]){continue;}else{angle = 90;}}if(angle == 90){if(a[i][j] == b[j][n - i - 1]){continue;}else{angle = 180;}}if(angle == 180){if(a[i][j] == b[n - i - 1][n - j -1]){continue;}else{angle = 270;}}if(angle == 270){if(a[i][j] == b[n - j - 1][i]){continue;}else{angle = -1;}}if(angle == -1){break;}}if(angle == -1){break;}}return angle;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.