网上的程序太复杂了自己动手写一个,注意方向与行列的关系即可。
代码如下:
#include<stdio.h>
#define N 500
static int c = 1, i, j, point = 0;
void swap( int n, int flag, int direction, int hang, int lie, int a[N][N])
{
if(c == n*n){
a[hang][lie] = c;
point = 1;
}
else
{
if(direction == 1 && point == 0)
{
for(i=0; i<flag; i++) a[hang][lie++] = c++;
swap(n, flag-1, ++direction, ++hang, --lie, a);
}
if(direction == 2 && point == 0)
{
for(i=0; i<flag; i++) a[hang++][lie] = c++;
swap(n, flag, ++direction, --hang, --lie, a);
}
if(direction == 3 && point == 0)
{
for(i=0; i<flag; i++) a[hang][lie--] = c++;
swap(n, flag-1, ++direction, --hang, ++lie, a);
}
if(direction == 4 && point == 0)
{
for(i=0; i<flag; i++) a[hang--][lie] = c++;
swap(n, flag, 1, ++hang, ++lie, a);
}
}
}
int main()
{
int hang = 0, lie = 0, a[N][N], n, flag, direction = 1;
scanf("%d", &n) ;
flag = n;
swap(n, flag, direction, hang, lie, a);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%3d", a[i][j]);
printf("\n");
}
}
好不容易拿了次第一,截图榴莲哈哈哈
37. 晕
成绩 | 5 | 开启时间 | 2018年04月16日 星期一 14:00 |
折扣 | 0.8 | 折扣时间 |