九度-1164 旋转矩阵

题目描述:

任意输入两个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>
int m[9][9],in[9][9];

int judge(int n)
{
  int i,j,flag=1;
  for (i=0;i<n&&flag==1;i++)
	for (j=0;j<n;j++)
	  if (m[i][j]!=in[i][j])
	  {
        flag=0;
		break;
	  }
  return flag;
}

void turn(int n)
{
  int i,j;
  int b[9][9];
  for (i=0;i<n;i++)
  {
	for (j=0;j<n;j++)
	  b[j][n-i-1]=m[i][j];
  }
  for (i=0;i<n;i++)
	for (j=0;j<n;j++)
	  m[i][j]=b[i][j];
}

int main ()
{
  int n,i,j;
  while (scanf ("%d",&n)!=EOF)
  {
    for (i=0;i<n;i++)
	  for (j=0;j<n;j++)
		scanf ("%d",&m[i][j]);
    for (i=0;i<n;i++)
	  for (j=0;j<n;j++)
		scanf ("%d",&in[i][j]); 
	i=0;
    if (judge(n)==1)
	  printf ("0\n");
	else
	  for (i=1;i<=3;i++)
	  {
        turn(n);
		if (judge(n)==1)
		{
		  printf ("%d\n",90*i);
		  break;
		}
	  }
	if (i>3)
	  printf ("-1\n");
  }
  return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值