牛客BC133
好久没更新啦
我刚做这个题思路是对的,但是逻辑混乱,回型矩阵每行每列各用各的变量,写的乱七八糟.
这题入手就像卷饼一样,从外面一层一层向中心逼近,,打印逻辑如下
通过定义上下左右来框限位置,向中心靠近,.代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
int main()
{
int n = 0;
int arr[20][20];
scanf("%d", &n);
int up = 0, left = 0, right = n - 1, down = n - 1;
int a = 1;
while (a <= n*n)
{
for (int j = left; j <= right; j++)//上
{
arr[up][j] = a++;
}up++;
for (int l = up; l <= down; l++)//右
{
arr[l][right] = a++;
}right--;
for (int j = right; j >= left; j--)//下
{
arr[down][j] = a++;
}down--;
for (int j = down; j >= up; j--)//左
{
arr[j][left] = a++;
}left++;
}
for (int x = 0; x < n; x++)//打印
{
for (int j = 0; j < n; j++)
{
printf("%3d ", arr[x][j]);
}
puts("");
}
return 0;
}