螺旋填数
题目描述:
创建一个m行n列的数组,将1—m*n的数字螺旋填入
方向为右下左上
输入说明:
输入正整数m和n,以空格分隔
输出说明:
输出填好的数组,数组元素之间用空格分隔,数组每行之间以换行分隔
输入示例:
4 5
输出示例:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
螺旋填数
题目描述:
创建一个m行n列的数组,将1—m*n的数字螺旋填入
方向为右下左上
输入说明:
输入正整数m和n,以空格分隔
输出说明:
输出填好的数组,数组元素之间用空格分隔,数组每行之间以换行分隔
输入示例:
4 5
输出示例:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
#include<stdio.h>
int main()
{
int m,n,x=0,y=0,c=1;
scanf("%d %d",&m,&n);
int a[m+1][n+1]={0};
a[x][y]=1;
while(c!=m*n){
while(y+1<n&&!a[x][y+1]) a[x][++y]=++c;
while(x+1<m&&!a[x+1][y]) a[++x][y]=++c;
while(y-1>=0&&!a[x][y-1]) a[x][--y]=++c;
while(x-1>=0&&!a[x-1][y]) a[--x][y]=++c;
}
for(x=0;x<m;x++){
for(y=0;y<n;y++)
printf("%3d", a[x][y]);
printf("\n");
}
}
test1:
4 5
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
test2:
6 4
1 2 3 4
16 17 18 5
15 24 19 6
14 23 20 7
13 22 21 8
12 11 10 9