时间限制:1 秒

内存限制: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
****************************************************************/

最新文章

  1. instanceof 运算符
  2. swing with transformjs
  3. MySQL Index详解
  4. kafka producer源码
  5. 《VTL语法参考指南》中文版[转]
  6. sftp 服务器外网访问设置
  7. BZOJ_2124_等差子序列_线段树+Hash
  8. shutil&amp;shelve
  9. SQL server SELECT 语句的基本结构
  10. SecureCRT通过密钥登录(网上也有很多教程,但是有些不详细,此教程本人亲测)
  11. C#设计模式之3:观察者模式
  12. 「ZJOI2016」旅行者 解题报告
  13. chardet查看字符串的编码(非常好用)
  14. Gym .101933 Nordic Collegiate Programming Contest (NCPC 2018) (寒假gym自训第四场)
  15. SAFESEH 映像是不安全的
  16. Linux上shell脚本date的用法
  17. Win10巧用自带输入法轻松打出特殊字符
  18. 【转】对H264进行RTP封包原理
  19. php正则验证邮箱、手机号、姓名、身份证、特殊符号等
  20. sql like参数化查询

热门文章

  1. 树(tree)
  2. VS如何反汇编
  3. mysql日常运维与参数调优
  4. 键盘弹出后上提view隐藏后下拉view还原并修改scroll过程中旋转屏幕到竖屏view显示错误
  5. 【mybatis】从一个错误,看mybatis中的#和$的区别
  6. 【spring boot】10.spring boot下的单元测试
  7. 2017.2.22 activiti实战--第六章--任务表单
  8. 2016.7.12 去除mybatis-generator生成的class里的注释
  9. Spring IOC源代码具体解释之整体结构
  10. 『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)