3,蛇型矩阵
#include<stdio.h>
#define max_length 16
main()
{
int a[16][16]={0};
int i,j,k,p=2,q,n=16;/*i,j,k用来循环,n用来存要输出放阵的长度*/
int flag=0; /*77*/
while(n>15)
{
printf("Please input the length of the phalanx:");
scanf("%d",&n);
}
a[1][1]=1;
j=1;
flag=0; /*77*/
for(i=3;i<n+2;i++)
{
q=p;
if(j==1&&flag==0)
for(j=0;j<i;j++)
{
for(k=1;k<i;k++)
{
if(j+k==i)
a[j][k]=p++;
if(p-q==i-1)
{
flag=1; /*77*/
goto NEXT;
}
}
if(flag==2) /*77*/
NEXT:{break;}
}
q=p;
i++;
if(k==1&&flag==1)
for(;k<i;k++)
{
for(j=1;j<i;j++)
{
if(j+k==i)
a[j][k]=p++;
if(p-q==i-1)
{
flag=0; /*77*/
goto NEXT2;
}
if(flag==2) /*77*/
NEXT2:{break;}
}
}
}
for(j=1;j<n+1;j++)
for(k=1;k<n+1;k++)
if(a[j][k]==0)
a[j][k]=(n*n+1)-a[n-j+1][n-k+1];
for(j=1;j<n+1;j++)
{
for(k=1;k<n+1;k++)
{
printf("%5d",a[j][k]);
}
printf("\n\n");
}
getch();
}