蛇形填数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述 - 在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入- 直接输入方陈的维数,即n的值。(n<=100)
输出- 输出结果是蛇形方陈。
样例输入-
3
样例输出-
7 8 1
6 9 2
5 4 3
-
#include<stdio.h>
int main()
{
int n,m = 0,a[101][101],sign = 0;
scanf("%d",&n);
int n1 = n;
while(sign < n*n)
{
int i = m,j = n1-1;
while(i < n1 - 1&&!a[i][j])//down
a[i++][j] = ++sign;
while(j > m&&!a[i][j]) //left
a[i][j--] = ++sign;
while(i > m&&!a[i][j]) //up
a[i--][j] = ++sign;
while(j < n1&&!a[i][j])//right
a[i][j++] = ++sign;
m++;
n1--;
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}