C/C
![](/icons/34529jiajia.gif)
VIA和EMC都曾经笔过这个试题
输入N, 打印 N*N 矩阵
比如 N = 3
![](/icons/34529dou.gif)
1 2 3
8 9 4
7 6 5
N = 4
![](/icons/34529dou.gif)
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
/*螺旋矩阵*/
#
![](/icons/34529include.gif)
#
![](/icons/34529include.gif)
#
![](/icons/34529define.gif)
#
![](/icons/34529define.gif)
#
![](/icons/34529define.gif)
#
![](/icons/34529define.gif)
//N*N矩阵
#
![](/icons/34529define.gif)
void pr
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529int.gif)
{
![](/icons/34529int.gif)
for (i = 0; i < n; i
![](/icons/34529jiajia.gif)
{
for (j = 0; j < n; j
![](/icons/34529jiajia.gif)
{
pr
![](/icons/34529int.gif)
}
pr
![](/icons/34529int.gif)
}
}
void spiralMatrix(
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529de.gif)
{
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529dou.gif)
![](/icons/34529de.gif)
![](/icons/34529int.gif)
![](/icons/34529dou.gif)
i = 0; //起点(0,0)
j = 0;
count = 1;
direct = RIGHT;
while (n > 1) //为方形才有下列代码
{
for (k = 0; k < n - 1; k
![](/icons/34529jiajia.gif)
![](/icons/34529de.gif)
{
a[i][j] = count
![](/icons/34529jiajia.gif)
switch (direct)
{
![](/icons/34529case.gif)
i
![](/icons/34529jiajia.gif)
![](/icons/34529break.gif)
![](/icons/34529case.gif)
j--;
![](/icons/34529break.gif)
![](/icons/34529case.gif)
i--;
![](/icons/34529break.gif)
![](/icons/34529case.gif)
j
![](/icons/34529jiajia.gif)
![](/icons/34529break.gif)
}
}
//如果刚走过
![](/icons/34529de.gif)
![](/icons/34529dou.gif)
![](/icons/34529if.gif)
![](/icons/34529dd.gif)
{
i
![](/icons/34529jiajia.gif)
j
![](/icons/34529jiajia.gif)
n -= 2;
}
//换方向
direct = (direct + 1) % 4;
}
![](/icons/34529if.gif)
![](/icons/34529dd.gif)
{
a[i][j] = count;
}
}
void spiralMatrix2(
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529de.gif)
{
![](/icons/34529int.gif)
![](/icons/34529int.gif)
// / 要注意i、j
![](/icons/34529de.gif)
![](/icons/34529dou.gif)
![](/icons/34529dou.gif)
![](/icons/34529de.gif)
for(; k < (n+1)/2; k
![](/icons/34529jiajia.gif)
{
while( j < n-k ) a[i][j
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529de.gif)
![](/icons/34529yi.gif)
while( i < n-k ) a[i
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529de.gif)
![](/icons/34529yi.gif)
while( j > k-1 ) a[i][j--] = count
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529de.gif)
![](/icons/34529yi.gif)
while( i > k ) a[i--][j] = count
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529jiajia.gif)
![](/icons/34529de.gif)
![](/icons/34529yi.gif)
}
}
此法各个while中
![](/icons/34529de.gif)
![](/icons/34529yi.gif)
![](/icons/34529dou.gif)
![](/icons/34529yi.gif)
![](/icons/34529dou.gif)
![](/icons/34529yi.gif)
递归方式
![](/icons/34529dou.gif)
![](/icons/34529dou.gif)
![](/icons/34529yi.gif)
![](/icons/34529de.gif)
![](/icons/34529de.gif)
据此更改递归方式
![](/icons/34529de.gif)
![](/icons/34529hanshu.gif)
/*
* matrix 2维矩阵
![](/icons/34529shuzu.gif)
*(x,y):第
![](/icons/34529yi.gif)
![](/icons/34529de.gif)
* start:第
![](/icons/34529yi.gif)
![](/icons/34529de.gif)
* width:矩阵
![](/icons/34529de.gif)
*/
void spiralMatrix3(
![](/icons/34529int.gif)
![](/icons/34529zhk2.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
{
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529if.gif)
![](/icons/34529dou.gif)
![](/icons/34529return.gif)
![](/icons/34529if.gif)
![](/icons/34529dd.gif)
![](/icons/34529dou.gif)
matrix[x][y] = start;
![](/icons/34529return.gif)
}
i = 0;
j = 0;
direct = RIGHT;
while(direct< UP+1) //走
![](/icons/34529yi.gif)
{
for (k = 0; k < width - 1; k
![](/icons/34529jiajia.gif)
{
matrix[x+i][y+j] = start
![](/icons/34529jiajia.gif)
switch (direct)
{
![](/icons/34529case.gif)
i
![](/icons/34529jiajia.gif)
![](/icons/34529break.gif)
![](/icons/34529case.gif)
j--;
![](/icons/34529break.gif)
![](/icons/34529case.gif)
i--;
![](/icons/34529break.gif)
![](/icons/34529case.gif)
j
![](/icons/34529jiajia.gif)
![](/icons/34529break.gif)
}
}
direct
![](/icons/34529jiajia.gif)
}
//走完
![](/icons/34529yi.gif)
i
![](/icons/34529jiajia.gif)
j
![](/icons/34529jiajia.gif)
width -= 2;
spiralMatrix(matrix, x+i, y+j, width, start); //再次跌代继续填充
}
void
![](/icons/34529main.gif)
{
![](/icons/34529int.gif)
![](/icons/34529int.gif)
![](/icons/34529int.gif)
for (i = 0; i < N; i
![](/icons/34529jiajia.gif)
{
a[i] = m[i]; //不能将 2维
![](/icons/34529shuzu.gif)
![](/icons/34529dou.gif)
![](/icons/34529de.gif)
}
//spiralMatrix(a, N);
//spiralMatrix2(a, N);
spiralMatrix3(a, 0, 0, N, 1);
pr
![](/icons/34529int.gif)
pr
![](/icons/34529int.gif)
getch
![](/icons/34529kh.gif)
}
最新评论