import java.io.*; import java.util.*; public class mj { 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=40; static char kh=0; 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()); */ n=6; z(); int i; for(s=1000;s<2000;s++){ System.out.print("s="+s+" "); kh=0; if(n==5){ for(i=0;i<8;i++){ if(i==0)t=1; if(i==1)t=3; if(i==2)t=7; if(i==3)t=11; if(i==4)t=13; if(i==5)t=17; if(i==6)t=19; if(i==7)t=23; hj = System.currentTimeMillis(); cn=0; f(0); } } if(n==6){ hj = System.currentTimeMillis(); cn=0; f(0); } if(n==7){ for(i=0;i<14;i++){ if(i==0)t=1; if(i==1)t=3; if(i==2)t=5; if(i==3)t=11; if(i==4)t=13; if(i==5)t=17; if(i==6)t=19; if(i==7)t=23; if(i==8)t=29; if(i==9)t=31; if(i==10)t=37; if(i==11)t=41; if(i==12)t=43; if(i==13)t=47; hj = System.currentTimeMillis(); cn=0; f(0); } } } /* ow = System.currentTimeMillis(); System.out.println(); System.out.println(n+"次魔方陣が"+cn+"個できました。"); System.out.println("魔方陣の探索にかかった時間は"+(ow-hj)/1000+"秒です。"); */ } public static void z(){ int i,j,p; int[][] a=new int[20][20]; for(i=0;i9)return; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)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; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)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; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)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; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)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; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)return; return; } if(y[g]>0 && y[g]n*n)return; for(i=0;i9)return; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)return; return; } if(y[g]==n-1 && x[g]>0 && x[g]n*n)return; for(i=0;i9)return; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)return; } else{ cn++; /* for(j=0;j9){ ow = System.currentTimeMillis(); if(mn>(ow-hj)/1000){ mn=(ow-hj)/1000; if(kh==0)System.out.println(); System.out.println(" s="+s+" t="+t+" "+" cn="+cn+" "+mn+"秒です。"); } kh=1; return; } } return; } int i,j,h,ii,iii; ii=0; if(n!=3 && n!=4){ Random r = new Random(s); ii=(int)(r.nextInt(n*n)); } for(i=1;i9)return; ow = System.currentTimeMillis(); if((ow-hj)/1000>mn)return; } } }