1596 - 旋转矩阵
时间限制 : 1 秒
内存限制 : 32 MB
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。<br />
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
<br />
题目输入
输入有多组数据。<br />
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
<br />
题目输出
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
如果旋转角度的结果有多个,则输出最小的那个。
<br />
输入/输出样例
输入格式
4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 3 1 2 3 4 5 6 7 8 9 3 2 1 6 5 4 9 8 7
输出格式
180 -1
C语言解答
#include <stdio.h> #define MAXN 10 int a[MAXN][MAXN]; int b[MAXN][MAXN]; int main(){ int n,i,j,mark=0; while(scanf("%d",&n)==1){ 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]); } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[i][j]) {mark =1;i=n; j=n;} } } if(mark==0) {printf("0\n");} else{ for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[j][n-i-1]) {mark =0;i=n; j=n;} } } if(mark==1) {printf("90\n");} else { for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[n-i-1][n-j-1]) {mark =1;i=n; j=n;} } } if(mark==0) { printf("180\n"); } else { for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[n-j-1][i]) {mark =0;i=n; j=n;} } } if(mark==1) { printf("270\n"); } if(mark==0) printf("-1\n"); } } } } // printf("%d",a[0][0]); return 0; }
C++解答
#include <stdio.h> #define MAXN 10 int a[MAXN][MAXN]; int b[MAXN][MAXN]; int main(){ int n,i,j,mark=0; while(scanf("%d",&n)==1){ 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]); } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[i][j]) {mark =1;i=n; j=n;} } } if(mark==0) {printf("0\n");} else{ for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[j][n-i-1]) {mark =0;i=n; j=n;} } } if(mark==1) {printf("90\n");} else { for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[n-i-1][n-j-1]) {mark =1;i=n; j=n;} } } if(mark==0) { printf("180\n"); } else { for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]!=b[n-j-1][i]) {mark =0;i=n; j=n;} } } if(mark==1) { printf("270\n"); } if(mark==0) printf("-1\n"); } } } } // printf("%d",a[0][0]); return 0; }