您的位置:首页 > 其它

由外向内顺时针&逆时针旋转矩阵

2013-05-28 21:09 330 查看
代码如下:

#include <iostream>
using namespace ::std;

#define N 10

int a

;

void InitSeq( int n )
{
int value = 1;
int i, j;
for( i = 0; i < n/2; i++ )  // n/2是圈数
{
for( j = i; j < n - i; j++ ) //向右增长
{
a[j][i] = value++;
}
for( j = i + 1; j < n - i; j++ ) //向下增长
{
a[n-1-i][j] = value++;
}
for( j = n - 2 - i; j > i; j-- )  //向左增长
{
a[j][n-1-i] = value++;
}
for( j = n - 1 - i; j > i; j-- )  //向上增长
{
a[i][j] = value++;
}

//n为奇数时,最中间数的值
if( n % 2 == 1 )
a[n/2][n/2] = value;
}
}

void printSeq( int n )
{
cout << "顺时针:" << endl;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < n; j++ )
{
printf( "%5d", a[j][i] );
}
printf("\n");
}

cout << "逆时针:" << endl;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < n; j++ )
{
printf( "%5d", a[i][j] );
}
printf("\n");
}
}

int main()
{
int n;
cout << "请输入旋转矩阵边的大小:";
cin >> n;

InitSeq(n);
printSeq(n);

system( "PAUSE");
return 0;
}

输出结果:

请输入旋转矩阵边的大小:7
顺时针:
1    2    3    4    5    6    7
24   25   26   27   28   29    8
23   40   41   42   43   30    9
22   39   48   49   44   31   10
21   38   47   46   45   32   11
20   37   36   35   34   33   12
19   18   17   16   15   14   13
逆时针:
1   24   23   22   21   20   19
2   25   40   39   38   37   18
3   26   41   48   47   36   17
4   27   42   49   46   35   16
5   28   43   44   45   34   15
6   29   30   31   32   33   14
7    8    9   10   11   12   13
请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: