蛇形阵分一字阵和回字阵,如3*3:
一字阵: 回字阵:
1 2 6 7 6 5
3 5 7 8 1 4
一字阵: 回字阵:
1 2 6 7 6 5
3 5 7 8 1 4
4 8 9 9 2 3
代码:
#include<stdio.h>
using
namespace
std;
int
main()
{
int
i,j,a[30][30],n,k;
scanf
(
"%d"
,&n);
k=1;
for
(i=0; i<n; i++)
{
for
(j=0; j<=i; j++)
{
if
(i%2==0) a[i-j][j]=k;
else
a[j][i-j]=k;
k++;
}
}
for
(i=n; i<2*n; i++)
{
for
(j=1; j<2*n-i; j++)
{
if
(i%2==0) a[n-j][i-n+j]=k;
else
a[i-n+j][n-j]=k;
k++;
}
}
for
(i=0; i<n; i++)
{
printf
(
"\n"
);
for
(j=0; j<n; j++)
{
printf
(
"%4d"
,a[i][j]);
}
}
printf
(
"\n"
);
printf
(
"\n"
);
printf
(
"\n"
);
int
I,J,K;
int
t=n*n;
int
A[30][30];
for
(I=0;I<=n/2;I++)
{
for
(J=I;J<n-I;J++)
A[I][J]=t--;
for
(K=I+1;K<n-I;K++)
A[K][J-1]=t--;
for
(J-=2;J>=I;J--)
A[K-1][J]=t--;
for
(K-=2;K>I;K--)
A[K][J+1]=t--;
}
for
(J=n-1;J>=0;J--)
{
for
(K=0;K<n;K++)
printf
(
"%4d"
,A[K][J]);
printf
(
"\n"
);
}
return
0;
}
一字阵就是按照规律将矩阵分成上下两个三角形 :
5
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19
20 21 22
23 24
25
回字的话就是按照这个回旋的规律输入二维矩阵