回形取数

来源:互联网 发布:施温格 知乎 编辑:程序博客网 时间:2024/06/15 17:24

题目描述

输入

输出

样例输入

3 31 2 34 5 67 8 9

样例输出

1 4 7 8 9 6 3 2 5

代码

#include<stdio.h>int num[250][250];int book[250][250];int n,m;int main(){    scanf("%d%d",&n,&m);    int i,j;    for(i=0;i<n;i++)        for(j=0;j<m;j++)        scanf("%d",&num[i][j]);    int cnt=0;    i=-1;    j=0;    while(cnt<n*m){        while(i+1<n&&!book[i+1][j]){  //向下            book[i+1][j]=1;            printf("%d",num[++i][j]);            if(cnt<n*m-1) printf(" ");            cnt++;        }          while(j+1<m&&!book[i][j+1]){ //向右            book[i][j+1]=1;            printf("%d",num[i][++j]);            if(cnt<n*m-1) printf(" ");            cnt++;        }          while(i-1>=0&&!book[i-1][j]){ //向上            book[i-1][j]=1;            printf("%d",num[--i][j]);            if(cnt<n*m-1) printf(" ");            cnt++;        }          while(j-1>=0&&!book[i][j-1]){ //向左            book[i][j-1]=1;            printf("%d",num[i][--j]);            if(cnt<n*m-1) printf(" ");            cnt++;        }    }return 0;}