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