import java.io.*; import java.util.*; public class mk { public static int[] x=new int[100]; public static int[] y=new int[100]; public static int[][] m=new int[20][20]; public static int n,cn; static double hj,ow; static int t=1; static long s=0; static double mn=10000000; public static void main(String args[]) throws IOException { BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); System.out.println("何次魔方陣を生成させますか。"); System.out.print("n="); n=Integer.parseInt(a.readLine()); z(); hj = System.currentTimeMillis(); cn=0; f(0); ow = System.currentTimeMillis(); System.out.println(); System.out.println(n+"次魔方陣が"+cn+"個できました。"); System.out.println("魔方陣の探索にかかった1個あたりの時間は平均で"+(ow-hj)/10000+"秒です。"); } public static void z(){ int i,j,p; int[][] a=new int[20][20]; for(i=0;i9)return; if(y[g]==n-1 && x[g]==n-1){ int i,w=0; for(i=0;in*n)return; for(i=0;i9)return; return; } if(y[g]==n-1 && x[g]==0){ int i,w=0; for(i=0;in*n)return; for(i=0;i9)return; return; } if(y[g]==0 && x[g]==n-2){ int i,w=0; for(i=0;in*n)return; for(i=0;i9)return; return; } if(y[g]==n-2 && x[g]==0){ int i,w=0; for(i=0;in*n)return; for(i=0;i9)return; return; } if(y[g]>0 && y[g]n*n)return; for(i=0;i0 && x[g]n*n)return; for(i=0;i9)return; } else{ cn++; int j; for(i=0;i9)return; } return; } int i,j,h,ii,iii; ii=0; if(n!=3 && n!=4){ if(n==6)s=2031; if(n==5)s=361; Random r = new Random(s); ii=(int)(r.nextInt(n*n)); } if(n==6)t=1; if(n==5)t=23; for(i=1;i