アットウィキロゴ

鉄道

package line2;
 
 
 
public class pro {
 
    int a[]=new int[5000];
    int b[]=new int[5000];
    double d[]=new double[5000];
 
    int number;
    int number_line;
    int s;
  int mid,last,fast;
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
    pro(){
 
        number=100;
 
        for(s=1;s<number;s++){
        a[s]=s;
        b[s]=s+1;
        d[s]=1;
        }
        number_line=number-1;
 
        int tr;
 
        for(tr=1;tr<11;tr++){ 
     for(fast=1;fast<number+1;fast++){
 
   search(fast);
 
 
   int ch=check();     
   if(ch>50){
   double d1=dis(fast,mid)+dis(mid,last); 
   double d2=dis(fast,last);
   int sp=delta();
   if(d2>d1)d[sp]=d1;
   }
 
 
   if(fast==last)ch=100;    
   if(ch<50){
   number_line=number_line+1;
   a[number_line]=fast;
   b[number_line]=last;
   d[number_line]=dis(fast,mid)+dis(mid,last);
   }
 
   System.out.println(number_line+","+fast+","+last);
    }}
 
 
 
    }
 
   int check(){ 
 
       int s,h;
       int ch;
       ch=0;
    for(s=1;s<number_line+1;s++){
    h=0;
    if(a[s]==fast)h=h+1;
    if(b[s]==last)h=h+1;
    if(h==2)ch=100;
    h=0;
    if(a[s]==last)h=h+1;
    if(b[s]==fast)h=h+1;
    if(h==2)ch=100;
    }     
 
 
    return ch;
   }
 
    int delta(){ 
 
       int s,h;
       int ch,delta;
       delta=0;
    for(s=1;s<number_line+1;s++){
    h=0;
    if(a[s]==fast)h=h+1;
    if(b[s]==last)h=h+1;
    if(h==2)delta=s;
    h=0;
    if(a[s]==last)h=h+1;
    if(b[s]==fast)h=h+1;
    if(h==2)delta=s;
    }     
 
 
    return delta;
   }
 
 
 
    void search(int fast){
 
    int sx;
    int[] p=new int[100];
    int[] q=new int[100];
    sx=0;
    for(s=1;s<number_line+1;s++){
    if(a[s]==fast)sx=sx+1;
    if(a[s]==fast)p[sx]=b[s];
    if(b[s]==fast)sx=sx+1;
    if(b[s]==fast)p[sx]=a[s];
    }    
   int numberx=sx;
 
 
   int r1=(int)(numberx*Math.random())+1;
   int s1=p[r1];
 
   sx=0;
    for(s=1;s<number_line+1;s++){
    if(a[s]==s1)sx=sx+1;
    if(a[s]==s1)q[sx]=b[s];
    if(b[s]==s1)sx=sx+1;
    if(b[s]==s1)q[sx]=a[s];
    }    
   int numbery=sx;
 
   int r2=(int)(numbery*Math.random())+1;
   int s2=q[r2];
 
   mid=s1;
   last=s2;
 
 
    }
 
double dis(int a1,int b1){
 
        double dd=999;
        int h;
 
    for(s=1;s<number_line+1;s++){
   h=0;
   if(a[s]==a1)h=h+1;
    if(b[s]==b1)h=h+1;
    if(h==2)dd=d[s];
   h=0;
   if(a[s]==b1)h=h+1;
   if(b[s]==a1)h=h+1;
   if(h==2)dd=d[s];
   }   
 
     return dd;  
   } 
 
 
 
 
}
最終更新:2015年04月21日 23:25