1.题意
神奇的幻方一题中,最难的就是理解题意,我感觉是用嘴或文字解决不了的,大家还是去看代码理解一下吧,这个题也没啥坑,就是步骤冗长,题意不太容易理解,但理解之后也觉得非常简单了。
2.思路
本题的思路就是看懂题,然后循环,再用四个判断即可。
3.源码(各位了解一下cnt++ 和++cnt)
# include <stdio.h>
int main ()
{
int n,x,y;
int cnt=1;
int arr[40][40]={0};
scanf("%d",&n);
x=0; //行
y=n/2; //列
arr[x][y]=cnt++; //确定第一个元素的位置
while(cnt<=n*n) //确定每一个元素的位置
{
if(x==0&&y!=n-1)
{
x=n-1;y=y+1;
arr[x][y]=cnt++;
continue;
}
if(x!=0&&y==n-1)
{
x=x-1;y=0;
arr[x][y]=cnt++;
continue;
}
if(x==0&&y==n-1)
{
x=x+1;
arr[x][y]=cnt++;
continue;
}
if(x!=0&&y!=n-1)
{
if(arr[x-1][y+1]==0)
{
x=x-1;y=y+1;
arr[x][y]=cnt++;
continue;
}
else
{
x=x+1;
arr[x][y]=cnt++;
continue;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]); //输出
}
printf("\n");
}
return 0;
}