アットウィキロゴ

鉄道7

package line6;
 
public class pro {
 
   int[] p=new int[101];
   int[] pr=new int[101];
   int[] point=new int[101];
   int s,number;
   double[][] v=new double[101][11]; 
    int[][] gotos=new int[101][11];
     int[] op=new int[101];
 
    public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
 
        number=100;
 
        for(s=1;s<number+1;s++){
        p[s]=(int)Math.floor(10*Math.random())+1;
        }
 
 
 
 
        for(s=1;s<number+1;s++){
        pr[s]=0;
        }
 
        double e1;
 
        int mode;
        mode=0;
 
        while(mode<20){
 
 
        for(s=1;s<11;s++){
        v[1][s]=u(1,s);    
        }
 
        int t,sx,sxs;
          double maxv;
        for(t=2;t<101;t++){
        for(s=1;s<11;s++){  
        e1=u(t,s);
         maxv=999;
        sxs=0;
         for(sx=1;sx<11;sx++){   
        double v1=e1+v[t-1][sx];
        double e2=(s-sx)*(s-sx);
        if(e2>3)v1=999;
         if(maxv>v1)sxs=sx;
        if(maxv>v1)maxv=v1;
        }
        v[t][s]=maxv;       
        gotos[t][s]=sxs;
        }
        }
 
        maxv=999;
        sxs=0;
        for(s=1;s<11;s++){
        if(v[number][s]<maxv)sxs=s;
        if(v[number][s]<maxv)maxv=v[number][s];
        }
 
        op[number]=sxs;
 
        for(s=1;s<number;s++){
        t=number+1-s;
        sx=op[t];
        op[t-1]=gotos[t][sx];    
        }
 
        mode=mode+1;
 
 
 
        for(s=1;s<number+1;s++){
        point[s]=op[s];    
        }
 
   for(s=1;s<number+1;s++){
        pr[s]=point[s];    
        }
 
 
 
 
        } 
 
 
 
 for(s=1;s<number+1;s++){
    System.out.println(p[s]+","+point[s]);  
        }
 
 
 
 
 
 
 
 
 
    }
 double u(int s1,int p1){
 
     double e1=0;
     if(p[s1]>0)e1=(p1-p[s1])*(p1-p[s1]);
     if(pr[s1]>0)e1=e1+(p1-pr[s1])*(p1-pr[s1]);
 
     return e1;
 }
 
 
 
}
 
最終更新:2015年04月28日 06:57