问题标题: 酷町堂:4701 螺旋输出矩阵

0
0
已解决
许嘉耀
许嘉耀
新手守护
新手守护

题目链接: 酷町堂:4701

#include <iostream>

#include <iomanip>

using namespace std;

int n,m,r,u,l,d,k=1;

int a[110][110];

int main(){

    cin>>n>>m;

    u=l=1;

    d=r=n;

    for(int i=1;i<=n;i++){

        for(int j=1;j<=m;j++){

            cin>>a[i][j];

        }

    }

    while(k<=n*n){

        for(int i=l;i<=r;i++){

            cout<<a[u][i]<<" ";

        }

        u++;

        for(int i=u;i<=d;i++){

            cout<<a[i][r]<<" ";

        }

        r--;

        for(int i=r;i>=l;i--){

            cout<<a[d][i]<<" ";

        }   

        d--;

        for(int i=d;i>=u;i--){

            cout<<a[i][l]<<" ";

        }

        l++;    

    }   

    return 0;

}


0
已采纳
邹正洋
邹正洋
中级守护
中级守护

首先给x,y赋值:

x=1,y=0;

接着while套4个while:

循环(填的数字个数小于等于n*m){

    内部先往下走走到头

    再往左走走到头

    然后往上走走到头

    最后往右走走到头

}

循环(k小于等于n*m){
        循环(y小于n且a[x][y+1]不等于0){
            y+1
            输出(自己想)
            置零(a[x][y])
            计数器++
        }
        循环(x大于m且a[x+1][y]不等于0){
            x-1
            输出(自己想)
            置零(a[x][y])
            计数器++
        }
        循环(y大于1且a[x][y-1]不等于0){
            y-1
            输出(自己想)
            置零(a[x][y])
            计数器++
        }
        循环(y小于n且a[x-1][y]不等于0){
            x-1
            输出(自己想)
            置零(a[x][y])
            计数器++
        }
    }

即可AC!!

邹正洋在2022-03-07 13:13:17追加了内容

循环(){

    先往右走

    在往下走

    然后往左走

    最后往上走

}

0
0
我要回答