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