题目1164:旋转矩阵

题目描述:

任意输入两个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}//forfor(i=0;i<n;i++){for(j=0;j<n;j++){cin>>b[i][j];}//for}//forif(f0())cout<<0<<endl;else if(f90())cout<<90<<endl;else if(f180())cout<<180<<endl;else if(f270())cout<<270<<endl;elsecout<<-1<<endl;}//whilereturn 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;}//f0bool 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;}//f90bool 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;}//f180bool 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: 1164User: CarvinLanguage: C++Result: AcceptedTime:0 msMemory:1520 kb****************************************************************/

版权声明:本文为博主原创文章,未经博主允许不得转载。

与其在那里苦苦挣扎,碍于面子硬撑,倒不如微笑着面对,

题目1164:旋转矩阵

相关文章:

你感兴趣的文章:

标签云: