问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
#include<stdio.h>
int main(){
int n,m,count;
scanf("%d%d",&n,&m);
count=m*n;
int a[n][m],i,j;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
int t=0;
i=0;j=0;
while(count){
while(i<n-t&&count){
if(i==0&&j==0){
printf("%d",a[0][0]);
i++;
}else
printf(" %d",a[i++][j]);
count--;
}
i--;
j++;
while(j<m-t&&count){
printf(" %d",a[i][j++]);
count--;
}
j--;
i--;
while(i>=t&&count){
printf(" %d",a[i--][j]);
count--;
}
i++;j--;
while(j>t&&count){
printf(" %d",a[i][j--]);
count--;
}
j++;
i++;
t++;
}
}