/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#include <iostream>
template<int x>
void Make(int nList[][x], int n)//计算生成函数
{
for(int n2=n*n,n1=0,nh=n/2;n1<n2;n1++)
nList[(n1*(n-1)+nh+n1/n)%n][(n1+nh+1+n1/n)%n]=n1+1;
};
int main()
{
int nList[30][30],n=0;
while(scanf("%d",&n)==1)//输入阶数
{
if(!(n&1)) continue;
Make(nList, n);//调用生成
for(int n2=0;n2<n;n2++)//结果输出
{
for(int n1=0;n1<n;n1++)
printf("%4d",nList[n2][n1]);
printf("\n");
}
}
return 0;
}
不好意思,搞错了,生成的函数只要两行
" border="0" />[color=white]
[[it] 本帖最后由 爱喝牛奶的猫咪 于 2008-6-16 22:51 编辑 [/it]]