• 欢迎光临~

蓝桥杯 回形取数

开发技术 开发技术 2022-01-25 149次浏览

题目描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入描述

输入第一行是两个不超过 200 的正整数 m, n,表示矩阵的行和列。接下来 m 行每行 n 个整数,表示这个矩阵。

输出描述

输出只有一行,共 mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

输入输出样例

输入:

3 3
1 2 3
4 5 6
7 8 9

 输出:

1 4 7 8 9 6 3 2 5

 代码:

#include<stdio.h>        
int main()
{
    int n,m,i,j,sum=0,a[201][201],book[201][201],x=1,y=1;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            scanf("%d",&a[i][j]); 
        }
    }
    printf("%d",a[x][y]);
    book[x][y]=1;
    sum=1;
    while(sum<n*m){
        while(x+1<=n&&book[x+1][y]==0){//
            printf(" %d",a[++x][y]);
            book[x][y]=1;
            sum++;
        }
        while(y+1<=m&&book[x][y+1]==0){//
                            printf(" %d",a[x][++y]);
                            book[x][y]=1;
                            sum++;
        }
        while(x-1>=1&&book[x-1][y]==0){//
                    printf(" %d",a[--x][y]);
                    book[x][y]=1;
                    sum++;
        }
        while(y-1>=1&&book[x][y-1]==0){//
                    printf(" %d",a[x][--y]);
                    book[x][y]=1;
                    sum++;
        }
    }
    return 0;
}

题目链接:回形取数 - 蓝桥云课 (lanqiao.cn)

程序员灯塔
转载请注明原文链接:蓝桥杯 回形取数
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com