九度OJ 1164:旋转矩阵 (矩阵运算)
2024-10-01 06:30:38
时间限制: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
思路:
递归旋转,判断矩阵是否相同。
代码:
#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
****************************************************************/
最新文章
- instanceof 运算符
- swing with transformjs
- MySQL Index详解
- kafka producer源码
- 《VTL语法参考指南》中文版[转]
- sftp 服务器外网访问设置
- BZOJ_2124_等差子序列_线段树+Hash
- shutil&;shelve
- SQL server SELECT 语句的基本结构
- SecureCRT通过密钥登录(网上也有很多教程,但是有些不详细,此教程本人亲测)
- C#设计模式之3:观察者模式
- 「ZJOI2016」旅行者 解题报告
- chardet查看字符串的编码(非常好用)
- Gym .101933 Nordic Collegiate Programming Contest (NCPC 2018) (寒假gym自训第四场)
- SAFESEH 映像是不安全的
- Linux上shell脚本date的用法
- Win10巧用自带输入法轻松打出特殊字符
- 【转】对H264进行RTP封包原理
- php正则验证邮箱、手机号、姓名、身份证、特殊符号等
- sql like参数化查询
热门文章
- 树(tree)
- VS如何反汇编
- mysql日常运维与参数调优
- 键盘弹出后上提view隐藏后下拉view还原并修改scroll过程中旋转屏幕到竖屏view显示错误
- 【mybatis】从一个错误,看mybatis中的#和$的区别
- 【spring boot】10.spring boot下的单元测试
- 2017.2.22 activiti实战--第六章--任务表单
- 2016.7.12 去除mybatis-generator生成的class里的注释
- Spring IOC源代码具体解释之整体结构
- 『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)