关于魔方阵的数学思维?

来源:百度知道 编辑:UC知道 时间:2024/05/09 09:04:08
有谁是没有看网络上的魔方阵算法自己写出来这题目的呢?

请问你是如何用数学思维去思考这道题目的?

main()
{
int n,i,j;
int a[20][20],x[20][20],y[20][20];/* a数组为最后结果数组文中的B方阵,X,Y分别是文中提到的数组I,J*/
printf("please input the number:");
scanf("%d",&n); /*输入需要的数组维数*/
x[0][0]=(n+1)/2;
for(j=1;j<n;j++)
{
if(x[0][j-1]==n) x[0][j]=x[0][j-1]+1-n;
else x[0][j]=x[0][j-1]+1;
}/*给x中的第一行元素赋值*/

for(i=1;i<n;i++)
for(j=0;j<n;j++)
{
if(j-1<0) x[i][j]=x[i-1][j-1+n];
else x[i][j]=x[i-1][j-1];
} /*通过变换给X的所有元素赋值*/
clrscr();
printf("X:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%3d",x[i][j]);
if(j==n-1)printf("\n");
}/*输出X数组*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
y[i][j]=x[i][n-1-j];/*通过文中提到的公式给Y数组赋值*/
printf("Y:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("%3d",y[i][j]);