private static int[,] FillMatrix(int m, int n)
{
int[,] num = new int[m, n];
int number = 1;
int x = 0, y = 0;
int x_1 = 0, y_1 = 1;
while (number <= m * n)
{
num[x, y] = number;
x += x_1;
y += y_1;
//右侧从上到下
if ((y >= n - 1 || num[x, y + 1] != 0) && y_1 == 1)
{
x_1 = 1;
y_1 = 0;
}
//下侧从右到左
else if ((x >= m - 1 || num[x + 1, y] != 0) && x_1 == 1)
{
x_1 = 0;
y_1 = -1;
}
//左侧从下到上
else if ((y <= 0 || num[x, y - 1] != 0) && y_1 == -1)
{
x_1 = -1;
y_1 = 0;
}
//上侧从左到右
else if ((x <= 0 || num[x - 1, y] != 0) && x_1 == -1)
{
x_1 = 0;
y_1 = 1;
}
number++;
}
return num;
}
顺时针填充m×n回旋矩阵 C#
最新推荐文章于 2020-06-08 20:24:15 发布