背景:
你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:
1 | 2 | 6 | 7 | 15 |
3 | 5 | 8 | 14 | 16 |
4 | 9 | 13 | 17 | 22 |
10 | 12 | 18 | 21 | 23 |
11 | 19 | 20 | 24 | 25 |
学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。
输入:
方阵N的大小。
输出
方阵。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 5 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
#include <stdio.h>int main() {int n, i = 0, j = 0, x = 0, y = 0, count = 0;int a[101][101] = {0};int vx = 1, vy = 0;scanf("%d", &n);for (i = 1; i <= n * n; i++) {a[x][y] = i;x = x + vy;y = y + vx;if (x == 0 || y == 0 || x == n - 1 || y == n - 1) {if (i == n * (n + 1) / 2 - 1)count = count + 2;if (i >= n * (n + 1) / 2)count--;if (count % 4 == 0)vx = -1, vy = 1;else if (count % 4 == 1)vx = 0, vy = 1;else if (count % 4 == 2)vx = 1, vy = -1;else if (count % 4 == 3)vx = 1, vy = 0;if (i < n * (n + 1) / 2 - 1)count++;}}for (i = 0; i < n; i++) {for (j = 0; j < n; j++)if (j == 0)printf("%2d", a[i][j]);elseprintf("%3d", a[i][j]);printf("\n");}return 0;
}