AC代码如下:
#include<stdio.h>
int FM(int a[10][10],int s,int n,int f,int m) { int i; if(s==1) a[m/2][m/2]=1; else { for(i=0;i<s-1;i++) { a[f+i][f]=n-i; a[f+s-1][f+i]=n-(s-1)-i; a[f+s-1-i][f+s-1]=n-2*(s-1)-i; a[f][f+s-1-i]=n-3*(s-1)-i; FM(a,s-2,n-4*(s-1),f+1,m); } } return a[f][f]; } int main() { int s,i,j,m; int a[10][10]; scanf("%d",&s); m=s; int f=0; int n; n=m*m; FM(a,s,n,f,m); for(i=0;i<s;i++) { for(j=0;j<s;j++) printf("- ",a[i][j]); printf("\n"); } return 0; }
注:和矩阵填充的题目很相似 要变得东西很少;