作业帮 > 综合 > 作业

c语言蛇形填阵将1~n*n填入一个n*n的矩阵中,并要求成为蛇形.蛇形即是从右上角开始向下,向左,向上,向右,循环填入数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 01:52:27
c语言蛇形填阵
将1~n*n填入一个n*n的矩阵中,并要求成为蛇形.蛇形即是从右上角开始向下,向左,向上,向右,循环填入数字.
比如n=5时矩阵为:
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
输入
输入有多行,每行为一个整数n(1
#include<stdio.h>
#define MAXN 50
int a[MAXN][MAXN];
int main()
{
    int n, x, y, tot = 0;
    scanf("%d", &n);
    memset(a, 0, sizeof(a));
    tot = a[x = 0][y = n - 1] = 1;
    while(tot < n * n)
    {
        while(x + 1 < n && ! a[x + 1][y]) a[++x][y] = ++tot;
        while(y - 1 >= 0 && ! a[x][y - 1]) a[x][--y] = ++tot;
        while(x - 1 >= 0 && ! a[x - 1][y]) a[--x][y] = ++tot;
        while(y + 1 < n && ! a[x][y + 1]) a[x][++y] = ++tot;
    }
    for(x = 0; x < n; x++)
    {
        for(y = 0; y < n; y++)
            printf("%3d", a[x][y]);
        puts("");
    }
    return 0;
}
再问: 时间超限
再答: 就算是输入的50才填2500个数,而计算机1s可以运行10^8次计算。怎么都不可能超时啊。 你是不是什么地方写错了?