標籤:online judge 九度 c++
-
題目描述:
-
任意輸入兩個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
-
C++代碼:
#include<iostream>using namespace std; bool f0();bool f180();bool f90();bool f270(); int a[9][9],b[9][9]; int i,j; int n;int main(){ while(cin>>n) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { cin>>a[i][j]; }//for }//for for(i=0;i<n;i++) { for(j=0;j<n;j++) { cin>>b[i][j]; }//for }//for if(f0()) cout<<0<<endl; else if(f90()) cout<<90<<endl; else if(f180()) cout<<180<<endl; else if(f270()) cout<<270<<endl; else cout<<-1<<endl; }//while return 1;}//main bool f0() { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(a[i][j]!=b[i][j]) return false; } } return true; }//f0 bool f90() { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(a[i][j]!=b[j][n-i-1]) return false; } } return true; }//f90 bool f180() { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(a[i][j]!=b[n-i-1][n-j-1]) return false; } } return true; }//f180 bool f270() { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(a[i][j]!=b[n-j-1][i]) return false; } } return true; }/************************************************************** Problem: 1164 User: Carvin Language: C++ Result: Accepted Time:0 ms Memory:1520 kb****************************************************************/
-
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
題目1164:旋轉矩陣