矩阵旋转问题的求解

       今天刚刚练习做到一个关于矩阵转置的算法问题,主要用到顺时针与逆时针旋转,时间匆忙,就随便记录下思路吧,等有时间再将详细的求解过程贴出来,当然原算法的复杂度要稍微高些,不过只要掌握了矩阵的旋转,答案也就自然而然地闪现呢!好了,不啰嗦,请看代码吧!

01:  int _tmain(int argc, _TCHAR* argv[])
02:  {    
03:      int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},b[4][4],c[4][4],i,j;
04:      for(i=0;i<4;i++)
05:      {
06:         for(j=0;j<4;j++)
07:         {
08:             printf("%d\t",a[i][j]);
09:         }
10:         printf("\n");
11:      }
12:      for(i=0;i<4;i++)
13:      {
14:         for(j=0;j<4;j++)
15:         {
16:             b[i][j]=a[3-j][i];//顺时针旋转
17:         }
18:      }
19:      for(i=0;i<4;i++)
20:      {
21:         for(j=0;j<4;j++)
22:         {
23:             c[i][j]=a[j][3-i];//逆时针旋转
24:         }
25:      }
26:      printf("顺时针旋转变换后 :\n"); 
27:      for(i=0;i<4;i++)
28:      {
29:         for(j=0;j<4;j++)
30:         {
31:             printf("%d\t",b[i][j]);
32:         }
33:         printf("\n");
34:      }
35:      printf("逆时针旋转变换后:\n");
36:      for(i=0;i<4;i++)
37:      {
38:         for(j=0;j<4;j++)
39:         {
40:             printf("%d\t",c[i][j]);
41:         }
42:         printf("\n");
43:      }
44:      getchar();
45:      return 0;
46:  }
        很简单吧,好好琢磨下变换的规律吧,假如是旋转180,270呢???
posted @ 2011-03-15 17:14  JackyBing  阅读(357)  评论(0编辑  收藏  举报