标签:
给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。
奇数幻方口诀:
如输入3得到结果
8 1 6 3 5 7 4 9 2
代码为:
package huanHuang; public class HF { public static int[][] square(int n){ int[][] martix=new int[n][n]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) martix[i][j]=0; int i=0; int j=n/2; martix[i][j]=1; for(int k=2;k<=n*n;k++){ if(i>=1 && j<n-1){//非第一行且右边不越界 if(martix[i-1][j+1]==0){//若数字的右上方未填充数字,这把右上方写入K; i--; j++; } else{//否则在数子的下方写入K; i++; } } else if(i==0 && j<n-1){//第一行右边不越界 if(martix[n-1][j+1]==0){ i=n-1; j++; } else{ i++; } } else if(i>=1 && j==n-1){//非第一行右边越界 if(martix[i-1][0]==0){ i--; j=0; } else{ i++; } } else{//第一行且右边越界 if(martix[0][n-1]==0) { i=0; j=n-1; } else{ i++; } } martix[i][j]=k; } return martix; } public static void main(String[] args) { int n=3; int[][] m=HF.square(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(m[i][j]+"\t"); } System.out.println(); } } }
标签:
原文地址:http://www.cnblogs.com/enjoy-life-clh/p/4800410.html