アットウィキロゴ

r

package route;
 
 
public class pro {
 
    int[] x=new int[101];
    int[] y=new int[101];
 int[] number_dir=new int[101];
 int[][] dir=new int[101][10];
 double[][] p=new double[101][10];   
 int[][] trip=new int[10001][501];
 int[] number_trip=new int[10001];
 
    public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
        int s,sx,tx;
        tx=0;
        for(s=1;s<11;s++){
        for(sx=1;sx<11;sx++){
        tx=tx+1;
        x[tx]=s;
        y[tx]=sx;
        }    
        }
 
        int k;
        for(tx=1;tx<101;tx++){
        int n=0;
        for(s=-1;s<2;s++){
        for(sx=-1;sx<2;sx++){
        int x1=x[tx]+s;
        int y1=y[tx]+sx;
        int j=0;
        for(k=1;k<101;k++){
        int h=0;
        if(x1==x[k])h=h+1;
        if(y1==y[k])h=h+1;
        if(h==2)j=k;
        }
        if(tx==j)j=0;
        if(j>0)n=n+1;
        if(j>0)dir[tx][n]=j;
        }    
        }
        number_dir[tx]=n;
        }
 
       for(s=1;s<101;s++){
       for(sx=1;sx<number_dir[s]+1;sx++){
       p[s][sx]=(double)1/number_dir[s];
       }    
       }  
 
       int de;
       for(de=1;de<10;de++){
 
       for(s=1;s<10001;s++){
       int t=1;
       trip[s][t]=1;
       int mode=0;
       while(mode<50){
       int t1=trip[s][t];
       int t2=(int)(number_dir[t1]*Math.random())+1;
       t=t+1;
       number_trip[s]=t;
       trip[s][t]=dir[t1][t2];
       if(trip[s][t]==100)mode=100;
       if(t>400)mode=100;
       }
       }
 
       int[] c=new int[101];
       int[] cx=new int[101];
        int[] point=new int[101];
       for(s=1;s<101;s++){
       c[s]=0;
       cx[s]=0;
       }
 
 
       for(s=1;s<10001;s++){
       for(sx=1;sx<number_trip[s];sx++){
       int t1=number_trip[s]-sx;
       if(number_trip[s]>300)t1=500;
       int t2=trip[s][sx]; 
       c[t2]=c[t2]+1;
       cx[t2]=cx[t2]+t1;
       }    
       }  
 
 
         for(s=1;s<100;s++){
       point[s]=cx[s]/c[s];
         }
 
 
          for(s=1;s<100;s++){
          int minp=999999;
          int sxs=0;
         for(sx=1;sx<number_dir[s]+1;sx++){
         if(point[sx]<minp)sxs=sx;
         if(point[sx]<minp)minp=point[sx];
         }
 
         for(sx=1;sx<number_dir[s]+1;sx++){
         p[s][sx]=0.8*p[s][sx];
         }
         p[s][sxs]=p[s][sxs]+0.2;
         }
 
 
       }
 
       System.out.println(p[1][1]+","+dir[1][1]);
 
       int tr=1;
       for(s=1;s<7;s++){
      System.out.println(x[tr]+","+y[tr]);
           int sxs=0;         
       double maxp=0;    
       for(sx=1;sx<number_dir[tr]+1;sx++){
    if(p[tr][sx]>maxp)sxs=sx;   
     if(p[tr][sx]>maxp)maxp=p[tr][sx];    
      }
      tr=dir[tr][sxs]; 
      }
 
 
 
    }
 
 
 
}
 
最終更新:2016年12月31日 01:22