题目:
输入一个整数n,要求输出一个N×N蛇形阵(n<10),比如输入整数4,则输出如下蛇形阵:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
<mark>看到别人写心里痒痒,好久没有写过算法题,找到一到比较经典的题目写一写。
一般写这些算法题,都需要找规律,想一些特殊情况,甚至可以代一些数字进去。</mark>
上代码:
Console.WriteLine("请输入矩阵的行数n,你将生成一个n*n矩阵:");
int n = Convert.ToInt32(Console.ReadLine());
int num = 1;//矩阵值
int[,] arr = new int[n, n];
int a =Convert.ToInt32( Math.Ceiling(n*1.0 / 2));//根据观察总结,转的圈数为行数除以2,如果行数为奇数,则向上取整,即+1
for (int i = 0; i < a; i++)
{
for (int j = i; j < n - i; j++) //用于每一圈判断第一行
{
arr[i, j] = num++;
}
for (int j = i + 1; j < n - i - 1; j++) //用于每一圈判断最后一列
{
arr[j, n - i - 1] = num++;
}
for (int j = n - i - 1; j > i; j--) //用于判断每一圈最后一行
{
arr[n - i - 1, j] = num++;
}
for (int j = n - i - 1; j > i; j--) //用于判断每一圈第一列
{
arr[j, i] = num++;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(arr[i, j] + "\t");
}
Console.WriteLine();
}
Console.ReadKey();