- 题目描述:
-
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
- 输入:
-
输入有多组数据。每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
- 输出:
-
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。如果旋转角度的结果有多个,则输出最小的那个。
- 样例输入:
-
3 1 2 3 4 5 6 7 8 9 7 4 1 8 5 2 9 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 ****************************************************************/
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-24 23:21:26