先说思想:N=4时候和N=5的时候前面4条斜线上三角是相同的!所以这个可以用递归做。还有个规律很重要就是当2个数的横纵坐标和都是N+1的时候这2个值的和都是N*N+1!问题就很容易解决了!
写个大概:
int **array=NULL;
void main()
{
int n;
scanf("%d",&n);
array=(int**)malloc(n*sizeof(int*));
for(int i=0;i
array[i]=(int *)malloc(n*sizeof(int));
}
Testingval(n,n);
for(int i=0;i
printf("\n");
}
free(array);
}
int Testingval(int a,int n)//a 表示n行中的第几个。。n表示是N界矩阵!
{ if(n==1)
{ array[0][0]==1;
array[n][n]=n*n;
}
else
Testingval(a-1,n);
if(a%2)
{ int i=1;
array[0][a-1]=array[0][a-2]+1;
array[n-1][n-a]=n*n+1-array[0][a];
while(i {
array[i][a-1-i]=array[i-1][a-i+1]+1;
array[n-1-i][n-a+i]=n*n+1-array[i][a-i];
i++;
}
}
else
{int i=1;
array[a-1][0]=array[a-2][0]+1;
array[n-a][n-1]=n*n+1-array[a-1][0];
while(i {
array[a-1-i][i]=array[a-i+1][i-1]+1;
array[n-a+i][n-1-i]=n*n+1-array[a-1-i][i];
i++;
}
}
}
}