奇数阶偶数阶的幻方
程序员文章站
2024-03-19 10:12:40
...
- 首先是奇数幻方,例如:构造一个五阶幻方
-先画一个5*5的表格。把“1”放在中间一列最上边的方格中,从它开始,按对角线方向(从左下往右上)顺次把由小到大的各数放入方格中。
-如果碰到顶,则折向底,如果到达右侧,则折向左边。
-如果进行中轮到方格中已经有数或者到达右上角则退至前一格的下方。一直到所有格子都有数 - 偶数幻方以4倍的偶数阶方阵为例的构造方法
-用横线和竖线将n阶方阵划分为m个44的小方阵;
-将nn个数从小到大,从左到右,从上到下依次填入方阵中,遇到44小方阵的对角线不填(此位置不填的数不作为下一个位置填入的数)
-将nn个数从大到小,从左到右,从上到下依次填入方阵中4*4小方阵的对角线.上,其他位置不填(此位置不填的数不作为下一个位置填入的数)
public class text1{
public static void main(String[] args){
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.print("Enter the number:");
int n=s.nextInt();
int square[][]=new int[n][n];
if(n%2==1){
int j=(n-1)/2,i=0;
for(int a=0;a<n*n;){
a++;
if(square[i][j]==0)
{
square[i][j]=a;
i=(i-1+n)%n;
j=(j+1)%n;
}
else
{
i=(i+2)%n;
j=(j-1+n)%n;
a=a-1;
}
}
}
else
{
int i,j,a=n*n,c=1;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i%4==j%4||i%4+3==j%4||i%4==j%4+3)
square[i][j]=a;
else
square[i][j]=c;
a--;c++;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.format("%3d",square[i][j]);
}
System.out.println();
}
}
}