#include <stdio.h>
#include <stdlib.h>
int n,value;
int **s=NULL;
void prt()
{
int i,j;
for(i=1;i<n-1;i++)
{
for(j=1;j<n-1;j++)
{
printf("%02d ",s[i][j]);
}
printf("\n");
}
}
void ssz(int k)
{
int i=k+1,j=k+1;
s[i][j]=value++;
while(1)
{
if(s[i][j+1]!=0)
{
break;
}
else
{
s[i][++j]=value++;
}
}
while(1)
{
if(s[i+1][j]!=0)
{
break;
}
else
{
s[++i][j]=value++;
}
}
while(1)
{
if(s[i][j-1]!=0)
{
break;
}
else
{
s[i][--j]=value++;
}
}
while(1)
{
if(s[i-1][j]!=0)
{
break;
}
else
{
s[--i][j]=value++;
}
}
}
void lsz(int k)
{
int i=k+1,j=k+1;
s[i][j]=value++;
while(1)
{
if(s[i+1][j]!=0)
{
break;
}
else
{
s[++i][j]=value++;
}
}
while(1)
{
if(s[i][j+1]!=0)
{
break;
}
else
{
s[i][++j]=value++;
}
}
while(1)
{
if(s[i-1][j]!=0)
{
break;
}
else
{
s[--i][j]=value++;
}
}
while(1)
{
if(s[i][j-1]!=0)
{
break;
}
else
{
s[i][--j]=value++;
}
}
}
int main()
{
scanf("%d",&n);
n+=2;
int i,j;
s=(int**)malloc(sizeof(int*)*n);
for(i=0;i<n;i++)
{
*(s+i)=(int*)malloc(sizeof(int)*n);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
s[i][j]=0;
}
}
for(i=0;i<n;i++)
{
s[i][0]=-1;
s[i][n-1]=-1;
}
for(j=0;j<n;j++)
{
s[0][j]=-1;
s[n-1][j]=-1;
}
int arrow;
fflush(stdin);
value=1;
for(i=0;i<(n-2+1)/2;i++)
{
scanf("%d",&arrow);
if(arrow==1)
{
ssz(i);
}
else if(arrow==-1)
{
lsz(i);
}
}
prt();
return 0;
}
温馨提示:内容为网友见解,仅供参考