static void Main(string[] args)
{
int i, j;
// int n=15;
int n=9;
int[,] matrix = new int[n,n]; //螺旋矩阵(二维数组)
SetMatrix(matrix, 0, 0, 1, n);
//打印螺旋矩阵
for(i = 0; i < n; i++) {
for (j = 0; j < n; j++)
{
Console.Write("{0, 3}", matrix[i, j]);
//Console.Write(" ");
}
Console.WriteLine();
}
Console.Read();
}
private static void SetMatrix(int[,] matrix, int x, int y, int start, int n)
{
int i, j;
if (n < 0) { return; }
if (n == 1)
{
matrix[x,y] = start;
return;
}
for (i = y; i < y + n - 1; i++) /* 上部 */
matrix[x,i] = start++;
for (j = x; j < x + n - 1; j++) /* 右边 */
matrix[j,y + n - 1] = start++;
for (i = y + n - 1; i > y; i--) /* 底部 */
matrix[x + n - 1,i] = start++;
for (j = x + n - 1; j > x; j--) /* 左边 */
matrix[j,y] = start++;
SetMatrix(matrix, x + 1, y + 1, start, n - 2); /* 递归 */
}
{
int i, j;
// int n=15;
int n=9;
int[,] matrix = new int[n,n]; //螺旋矩阵(二维数组)
SetMatrix(matrix, 0, 0, 1, n);
//打印螺旋矩阵
for(i = 0; i < n; i++) {
for (j = 0; j < n; j++)
{
Console.Write("{0, 3}", matrix[i, j]);
//Console.Write(" ");
}
Console.WriteLine();
}
Console.Read();
}
private static void SetMatrix(int[,] matrix, int x, int y, int start, int n)
{
int i, j;
if (n < 0) { return; }
if (n == 1)
{
matrix[x,y] = start;
return;
}
for (i = y; i < y + n - 1; i++) /* 上部 */
matrix[x,i] = start++;
for (j = x; j < x + n - 1; j++) /* 右边 */
matrix[j,y + n - 1] = start++;
for (i = y + n - 1; i > y; i--) /* 底部 */
matrix[x + n - 1,i] = start++;
for (j = x + n - 1; j > x; j--) /* 左边 */
matrix[j,y] = start++;
SetMatrix(matrix, x + 1, y + 1, start, n - 2); /* 递归 */
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7899089/viewspace-732993/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7899089/viewspace-732993/