题解 | #旋转矩阵#

旋转矩阵

https://www.nowcoder.com/practice/bd62095a03a545729cdbfc506e0da952

注意!逆时针旋转

#include <iostream>
using namespace std;
#define N 9
//判断两个矩阵是否相同
int same(int a[][N],int b[][N],int na,int nb){
	int i,j,flag = 1;//flag=1矩阵相同
	for (i = 0;i < na;i++){
		for (j = 0; j < na; j++){
			if (a[i][j] != b[i][j]){
				flag = 0;
				return flag;
			} 
		}
	}
	return flag;
}
//输入
void input(int a[][N],int na){
	int i,j;
	for (i = 0;i < na;i++){
		for (j = 0; j < na; j++){
			cin >>a[i][j];
		}
	}
}
//旋转矩阵
void turn(int a[][N],int na){
	int i,j,b[N][N];
	for (i = 0;i < na;i++){
		for (j = 0; j < na; j++){
			b[i][j] = a[j][na-i-1];
		}

	}
	for (i = 0;i < na;i++){
		for (j = 0; j < na; j++){
			a[i][j] = b[i][j];
		}
	}
}
int main(){
	int n;
	while (cin >>n && n != 0){
		int a[N][N],b[N][N];
		int i,j,count = 0;//count是旋转次数
		//输入
		input(a,n);
		input(b,n);
	  //循环条件:矩阵不等 且 旋转次数小于4
		while(!same(a,b,n,n) && count < 4){
			turn(b,n);
			count++;
		}

		if(same(a,b,n,n))
			cout <<count*90<<endl;
		else cout <<"-1"<<endl;
	}
}

全部评论

相关推荐

07-07 10:44
青岛工学院 Java
机械打工仔:对方没做错任何事,你自己在这自找没趣呢,就算他工资不高,人家定多少薪资是人家的事,况且人家写了1~3年清清楚楚
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务