{"title": "题目描述:\n给出2个大小相同的矩阵方阵A,B,方阵中的元素为0或1。若A和B相似,满足下面条件:\n①A=B相等,则输出0\n②A经过顺时针旋转90°成为B,则输出1\n③A经过顺时针旋转180°成为B,则输出2\n④A经过顺时针旋转270°成为B,则输出3\n若A,B不相似,则输出-1;\n例如\nA:\n0 0 0 0\n0 0 0 0\n0 1 0 0\n0 0 0 0\nB:\n0 0 0 0\n0 1 0 0\n0 0 0 0\n0 0 0 0\n则输出1,因为A顺时针旋转90°成为B。\n输入:\n第一行为一个整数n(1sn≤20),\n接下来的n行表示A矩阵的01方阵,一行中的数之间均有一个空格分隔;\n再接下来的n行表示B矩阵的01方阵,一行中的数之间也均有一个空格分隔\n输出:\n一个整数(0,或1,或2,或3,或-1)即A,B相似的结果。\n样例组:\n样例输入:\n4\n0 0 0 0\n0 0 0 0\n0 1 0 0\n0 0 0 0\n0 0 0 0\n0 1 0 0\n0 0 0 0\n0 0 0 0\n样例输出:\n1\n用C++解题内容:#include \n#include \nusing namespace std;\n\n// 顺时针旋转90°\nvector<vector> rotate90(vector<vector>& matrix) {\n int n = matrix.size();\n vector<vector> res(n, vector(n, 0));\n for (int i = 0; i < n; i++) {\n for (int j = 0; j < n; j++) {\n res[j][n - 1 - i] = matrix[i][j];\n }\n }\n return res;\n}\n\n// 判断两个矩阵是否相等\nbool isEqual(vector<vector>& matrix1, vector<vector>& matrix2) {\n int n = matrix1.size();\n for (int i = 0; i < n; i++) {\n for (int j = 0; j < n; j++) {\n if (matrix1[i][j] != matrix2[i][j]) {\n return false;\n }\n }\n }\n return true;\n}\n\nint main() {\n int n;\n cin >> n;\n vector<vector> matrix1(n, vector(n, 0));\n vector<vector> matrix2(n, vector(n, 0));\n for (int i = 0; i < n; i++) {\n for (int j = 0; j < n; j++) {\n cin >> matrix1[i][j];\n }\n }\n for (int i = 0; i < n; i++) {\n for (int j = 0; j < n; j++) {\n cin >> matrix2[i][j];\n }\n }\n\n if (isEqual(matrix1, matrix2)) {\n cout << 0 << endl;\n } else {\n vector<vector> matrix3 = rotate90(matrix1);\n if (isEqual(matrix3, matrix2)) {\n cout << 1 << endl;\n } else {\n matrix3 = rotate90(matrix3);\n if (isEqual(matrix3, matrix2)) {\n cout << 2 << endl;\n } else {\n matrix3 = rotate90(matrix3);\n if (isEqual(matrix3, matrix2)) {\n cout << 3 << endl;\n } else {\n cout << -1 << endl;\n }\n }\n }\n }\n\n return 0;\n}\n

C++ 矩阵相似度判断:顺时针旋转比较

原文地址: https://www.cveoy.top/t/topic/p6W8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录