[YTU](3019)螺旋方阵

来源:互联网 发布:c语言左移和右移 编辑:程序博客网 时间:2024/05/16 06:01

Description

以下是一个5*5阶螺旋方阵。设计一个程序,输出该形式的n*n阶方阵(顺时针方向旋进)。

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Input

输入一个整数n,(n>=1&&n<=20)

Output

输出对应的n*n阶螺旋方阵。

Sample Input

5

Sample Output

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

HINT

两个数字中间至少留有一个空格!

Source

千千

AC代码:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){    int n;    scanf("%d",&n);    int v = 1;    int x=0;    int y=0;    int a[50][50];    memset(a,0,sizeof(a));    a[x][y] = v;    while(v < (n*n))    {        while(y+1<n && !a[x][y+1])            a[x][++y] = ++v;        while(x+1<n && !a[x+1][y])            a[++x][y] = ++v;        while(y-1>=0 && !a[x][y-1])            a[x][--y] = ++v;        while(x-1>=0 && !a[x-1][y])            a[--x][y] = ++v;    }    for(int i=0;i<n;i++)    {        for(int j=0;j<n;j++)            printf(" %d",a[i][j]);        printf("\n");    }    return 0;}
原创粉丝点击