問題描述
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉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++;
}
}