题目原文
题目描述
给出矩阵的行数和列数,输出一个逆螺旋矩阵,这里的逆螺旋矩阵定义如样例所示。
输入
矩阵的行数和列数,均不超过20。
输出
逆螺旋矩阵,每个数字占6位。
样例
输入样例1
5 5
输出样例1
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13
AC代码
#include <stdio.h>
int a[50][50];
int main()
{
int n, m;
scanf("%d%d", &n, &m);
int cnt = 1, total = n * m;
int left = 1, right = m;
int top = 1, bottom = n;
while (cnt <= total)
{
// 从右到左
for (int j = right; j >= left && cnt <= total; j--)
a[top][j] = cnt++;
// 从上到下
for (int i = top + 1; i <= bottom && cnt <= total; i++)
a[i][left] = cnt++;
// 从左到右
for (int j = left + 1; j <= right && cnt <= total; j++)
a[bottom][j] = cnt++;
// 从下到上
for (int i = bottom - 1; i > top && cnt <= total; i--)
a[i][right] = cnt++;
left++;
right--;
top++;
bottom--;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
printf("%6d", a[i][j]);
printf("\n");
}
return 0;
}