题解 | #旋转矩阵#

旋转矩阵

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;
	}
}

全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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