九度OJ 1164:旋转矩阵 (矩阵运算)
2015-10-25 22:53
246 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3188
解决:1245
题目描述:
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
输入:
输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
输出:
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
如果旋转角度的结果有多个,则输出最小的那个。
样例输入:
样例输出:
来源:2008年北京航空航天大学计算机研究生机试真题
思路:
递归旋转,判断矩阵是否相同。
代码:
内存限制:32 兆
特殊判题:否
提交:3188
解决:1245
题目描述:
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
输入:
输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
输出:
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
如果旋转角度的结果有多个,则输出最小的那个。
样例输入:
3 1 2 3 4 5 6 7 8 9 7 4 1 8 5 2 9 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 ****************************************************************/
相关文章推荐
- 温故知新之__Java类加载器(一)
- scrapy模拟表单爬虫
- 在vi/vim中输入方向键却被被转化为A B C D, 咋办?
- jquery UI 隐藏关闭按钮
- 九度OJ 1163:素数 (素数)
- 怎样在android中添加背景图片?
- Codeforces Round #327 (Div. 2) A Wizards' Duel (水题)
- CSS3总结
- 九度OJ 1163:素数 (素数)
- Sublime Text 3 常用插件以及安装方法(转)
- POJ3678
- opencv浅拷贝与深拷贝
- 使用Qt设计师文件的3种方式
- PostgreSQL——服务器基本设置与操作
- XMPP客户端库Smack 4.1.4版官方开发文档之五
- 高效使用JavaEE ORM框架
- 蓝牙聊天小项目——(2015.12.13暂时完结篇)
- Linux 网络编程: daytime Service
- log4j的使用方法
- Unity3d 应用系统分析