关于蛇形矩阵,就是弄不出

img

#include<iostream>
using namespace std;
int a[20][20];
int main() {

    int n,k=1,direct=2;//direct:1向上  2向下  3向左  4向右
    cin>>n;
    int i=0,j=n-1;
    while(k<=n*n) {
        
        if(a[i][j]==0) {
            a[i][j]=k;
            k++;
        }
        if(direct == 1) { //向上
            i--;//行减1
            if(i==-1||a[i][j]!=0) {
                direct=4;
                i++;
                j++;
            }
        } else if(direct == 2) { //向下
            i++;//行加1
            if(i==n||a[i][j]!=0) {
                direct=3;
                i--;
                j--;
            }
        } else if(direct == 3) { //向左
            j--;//列减1
            if(j==-1||a[i][j]!=0) {
                direct=1;
                i--;
                j++;
            }
        } else if(direct == 4) { //向右
            j++;//列加1
            if(j==n||a[i][j]!=0) {
                direct=2;
                i++;
                j--;
            }
        }
    }
    for(i=0; i<n; i++) {
        for(j=0; j<n; j++) {
            cout<<a[i][j] <<" ";
        }
        cout<<endl;
    }
    return 0;
}


 觉得有用的话采纳一下哈