PTA 7-5 螺旋方阵

7-5 螺旋方阵 (20分)

所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。

输入格式:
输入在一行中给出一个正整数N(<10)。

输出格式:
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。

输入样例:

5

输出样例:

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

思路:
每行每列的变化规律一定要清晰,捋清楚之后再开始写代码,多注意行列个数的变化
代码:

#include <iostream>
using namespace std;
int main()
{
    int N,t;
    cin>>N;
    int a[N][N];
    t=1;
    int k;
    int l1=0,l2=N-1,r1=0,r2=N-1;
    while(t<=N*N)
    {

        for ( k = r1; k <= r2; ++k) {
            a[l1][k]=t++;
        }
        l1++;
        for ( k = l1; k <= l2; ++k) {
            a[k][l2]=t++;
        }
        r2--;
        for ( k = r2; k>=r1; --k) {
            a[l2][k]=t++;
        }
        l2--;

        for ( k = l2; k >= l1; --k) {
            a[k][r1]=t++;
        }
        r1++;
    }
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j <N ; ++j) {
            printf("%3d",a[i][j]);
        }
        cout<<endl;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_46039856/article/details/106432805