import java.util.Scanner; public class Sudoku { public static void main(String[] args) { System.out.println("请输入九宫格的行列规模(只能是奇数的):"); Scanner scn = new Scanner(System.in); int n = Integer.parseInt(scn.nextLine()); int arr[][] = new int[n][n]; int a = 0; int b = (n-1) / 2; arr[a][b] = 1; for (int i = 2; i <= n*n; i++) { if(a==0 && b==n-1) { a++; } else if(a==0 && b>=0 && a<n-1) { a=n-1; b++; } else if(a>0 && a<=n-1 && b==n-1) { b=0; a--; } else if(arr[a-1][b+1]!=0) { a++; } else { b++; a--; } arr[a][b]=i; } for(int ii = 0;ii<n;ii++) { for (int jj = 0; jj < n; jj++) { System.out.print(arr[ii][jj] + "\t"); } System.out.println(); } } }
完成九宫格程序
在井字型的格局中(奇数格局),放入数字,使得每行每列以及斜对角线的和都相等
经验规则:从1开始按顺序逐个填写,1放在第一行的中间位置,下一个数往右上角45度
处填写。如果单边越界则按头尾相接地填;如果有冲突,则填在刚才位置的底下一格
如果双边越界,则填在刚才位置的底下一格。