P5731 【深基5.习6】蛇形方阵

P5731 【深基5.习6】蛇形方阵_第1张图片

AC代码 :

#include
#include

using namespace std;

int main(){
    int n;
    scanf("%d", &n);
    int a[n][n], tot, x, y;
    memset(a, 0, sizeof(a));
    tot = a[x=0][y=0] = 1;
    while(tot < n*n){
        while(y+1 < n && !a[x][y+1]) a[x][++y] = ++tot;
        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; 
    }   
    for(x=0; x<n; x++){
        for(y=0; y<n; y++){
            printf("%3d", a[x][y]);
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(洛谷)