主题:[原创]顺时针由外层螺旋遍历一个矩阵
在回贴时做的,觉得写的蛮短的[em12]
1 |2 |3 |4
----------
12|13|14|5
----------
11|16|15|6
----------
10|9 |8 |7
[code]
#define N 4
void
todo(int element)
{
fprintf(stdout,"%d\n",element);
return;
}
int
main(void)
{
int arr[N][N]={
1,2,3,4,12,13,14,5,11,16,15,6,10,9,8,7
};
int i,r,c;
for(i=0;i<(N+1)/2;++i){
for(r=i,c=i;c<N-i;)todo(arr[r][c++]);
for(--c,++r;r<N-i;)todo(arr[r++][c]);
for(--r,--c;c>=i;)todo(arr[r][c--]);
for(++c,--r;r>=i+1;)todo(arr[r--][c]);
}
return 0;
}
[/code]
1 |2 |3 |4
----------
12|13|14|5
----------
11|16|15|6
----------
10|9 |8 |7
[code]
#define N 4
void
todo(int element)
{
fprintf(stdout,"%d\n",element);
return;
}
int
main(void)
{
int arr[N][N]={
1,2,3,4,12,13,14,5,11,16,15,6,10,9,8,7
};
int i,r,c;
for(i=0;i<(N+1)/2;++i){
for(r=i,c=i;c<N-i;)todo(arr[r][c++]);
for(--c,++r;r<N-i;)todo(arr[r++][c]);
for(--r,--c;c>=i;)todo(arr[r][c--]);
for(++c,--r;r>=i+1;)todo(arr[r--][c]);
}
return 0;
}
[/code]