解题思路:
解螺旋矩阵的最重要的地方是要知道矩阵的个数,看下图:
如果是n 是奇数,则中间只有一个数,不是一个矩阵,如果n 是偶数,则中间是一个矩阵,总的矩阵个数为n/2,后面的任务就是从外向里遍历每一个矩阵。
int m = 0;
for (int k = 0; k < n/2; ++ k) { //n/2矩阵个数
for (int i = 0; i <= n-1-k; ++ i)
a[k][i] = m++; //第一区块
for (int i = k + 1; i < n-1-k; ++ i)
a[i][n-1-k] = m++; //第二区块
for (int i = n-1-k; i > k; -- i)
a[n-1-k][i] = m++; //第三区块
for (int i = n-1-k; i > k; -- i)
a[i][k] = m ++; //第四区块
if (n%2 == 1)
a[n/2][n/2] = m; //n=odd,填充中间一个数
}
另外一类是从中心开始,从里向外的螺旋,参考
http://www.cnblogs.com/eshizhan/archive/2010/06/01/1749013.html