C语言判断矩阵旋转关系 - 旋转角度检测
#include <stdio.h>
int rotateMatrix(int matrix1[10][10], int matrix2[10][10], int n);
int main() { int n; int matrix1[10][10], matrix2[10][10];
printf("请输入矩阵的阶数N:");
scanf("%d", &n);
printf("请输入第一个矩阵:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix1[i][j]);
}
}
printf("请输入第二个矩阵:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix2[i][j]);
}
}
int angle = rotateMatrix(matrix1, matrix2, n);
printf("旋转角度:%d\n", angle);
return 0;
}
int rotateMatrix(int matrix1[10][10], int matrix2[10][10], int n) { int angle = -1; int temp[10][10];
// 顺时针旋转90度
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
temp[i][j] = matrix1[n - j - 1][i];
}
}
// 判断是否与第二个矩阵相等
int equal = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (temp[i][j] != matrix2[i][j]) {
equal = 0;
break;
}
}
if (!equal) {
break;
}
}
if (equal) {
angle = 90;
return angle;
}
// 顺时针旋转180度
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
temp[i][j] = matrix1[n - i - 1][n - j - 1];
}
}
// 判断是否与第二个矩阵相等
equal = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (temp[i][j] != matrix2[i][j]) {
equal = 0;
break;
}
}
if (!equal) {
break;
}
}
if (equal) {
angle = 180;
return angle;
}
// 顺时针旋转270度
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
temp[i][j] = matrix1[j][n - i - 1];
}
}
// 判断是否与第二个矩阵相等
equal = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (temp[i][j] != matrix2[i][j]) {
equal = 0;
break;
}
}
if (!equal) {
break;
}
}
if (equal) {
angle = 270;
return angle;
}
return angle;
}
原文地址: https://www.cveoy.top/t/topic/pCaO 著作权归作者所有。请勿转载和采集!