九度OJ 1164:旋转矩阵 (矩阵运算)
来源:互联网 发布:windows编程视频下载 编辑:程序博客网 时间:2024/05/21 07:56
- 题目描述:
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
- 输入:
输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
- 输出:
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
如果旋转角度的结果有多个,则输出最小的那个。
- 样例输入:
31 2 34 5 67 8 97 4 18 5 29 6 3
- 样例输出:
90
- 来源:
- 2008年北京航空航天大学计算机研究生机试真题
思路:
递归旋转,判断矩阵是否相同。
代码:
#include <stdio.h> #define M 9 struct point { int i; int j;}; struct point rotate(int n, int i, int j, int degree){ struct point p; p.i = i; p.j = j; int tmp; for (int k=1; k<=degree/90; k++) { tmp = p.i; p.i = p.j; p.j = n-1 - tmp; } return p;} int main(void){ int n, i, j; int a[M][M], b[M][M]; struct point p; int degree; while (scanf("%d", &n) != EOF) { 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 (degree = 0; degree < 360; degree += 90) { for(i=0; i<n; i++) { for(j=0; j<n; j++) { p = rotate(n, i, j, degree); if (a[i][j] != b[p.i][p.j]) break; } if (j != n && a[i][j] != b[p.i][p.j]) break; } //printf("%d\n", degree); //printf("i=%d, j=%d\n", i, j); if (i == n) { printf("%d\n", degree); break; } } if (degree == 360) printf("%d\n", -1); } return 0;}/************************************************************** Problem: 1164 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb****************************************************************/
0 0
- 九度OJ 1164:旋转矩阵 (矩阵运算)
- 九度OJ 1164 旋转矩阵
- 九度OJ 1250:矩阵变换 (矩阵运算)
- 【九度OJ】1164【旋转矩阵】【C实现】
- 九度OJ题目1164:旋转矩阵解题报告
- 九度OJ-题目1164:旋转矩阵-模拟
- 九度1164 旋转矩阵
- 九度-1164 旋转矩阵
- 九度OJ 1139:最大子矩阵 (矩阵运算、缓存)
- 矩阵运算------矩阵旋转
- 九度OJ 1180:对称矩阵 (矩阵计算)
- 九度OJ 1191:矩阵最大值 (矩阵计算)
- 九度OJ 1193:矩阵转置 (矩阵计算)
- 【九度OJ】1001【矩阵】
- 矩阵旋转运算(一)
- 【LeetCode】48 Rotate Image && 【九度】题目1164:旋转矩阵
- 九度OJ 1474 矩阵幂(高效算法)
- 九度OJ 1171:C翻转 (矩阵计算)
- jquery UI 隐藏关闭按钮
- CodeBlocks常用操作快捷键
- 在C语言的库函数中就有快速排序的库函数,即为qsort
- iOS开发--OC对象模型你必须知道的几条规则
- 对话框形式的activity
- 九度OJ 1164:旋转矩阵 (矩阵运算)
- matlab 2014a的入门学习(1)周总结
- [Leetcode]3Sum Closest
- 从头认识java-4.2 方法重载
- 博客开通第一天
- Windows脚本符号总结
- 单元测试实施要点
- Contains Duplicate leetcode
- 经典语录收录(2)