如何通过旋转90度一个的N×N矩阵? [英] How to rotate a N x N matrix by 90 degrees?

查看:183
本文介绍了如何通过旋转90度一个的N×N矩阵?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何通过90度旋转的N×N矩阵。我想这是就地?

解决方案

 的for(int i = 0;我n种/ 2;我++)
   为(诠释J = 0; J&≤(N + 1)/ 2; J ++)
       cyclic_roll(M [] [j]时,M [N-1-j]的[I]中,M [N-1-i的] [n-1个-j]时,米[j]的[n-1个-1]) ;


无效cyclic_roll(INT和放大器;一,INT和b,INT和C,INT和D)
{
   INT TEMP =一个;
   A = B;
   B = C;
   C = D;
   D =温度;
}
 

注意我没有测试过这一点,只是compoosed现在在现场。干嘛用的任何事情之前,请测试。

How to rotate a N x N matrix by 90 degrees. I want it to be inplace?

解决方案

for(int i=0; i<n/2; i++)
   for(int j=0; j<(n+1)/2; j++)
       cyclic_roll(m[i][j], m[n-1-j][i], m[n-1-i][n-1-j], m[j][n-1-i]);


void cyclic_roll(int &a, int &b, int &c, int &d)
{
   int temp = a;
   a = b;
   b = c;
   c = d;
   d = temp;
}

Note I haven't tested this, just compoosed now on the spot. Please test before doing anything with it.

这篇关于如何通过旋转90度一个的N×N矩阵?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆