アットウィキロゴ

いtll

package line;
 
public class pro {
 
    int number;
   int[] a_line=new int[10000];
   int[] b_line=new int[10000];
   int[] d_line=new int[10000];
   int number_line; 
   int s;
 
    int[] trip=new int[100];
   int number_trip;
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
    pro(){
 
        number=50;
        number_line=49;
 
        for(s=1;s<number_line+1;s++){
        a_line[s]=s;
        b_line[s]=s+1;
        d_line[s]=1;
        }
 
 
        int k,maxline;
 
 
 
        for(k=1;k<10001;k++){
 
        number_trip=1;
        trip[1]=fast();
 
        int mode;
        mode=0;
        while(mode<50){
       int tr=search_trip(trip[number_trip]);
       int ch=check_trip(tr);
       if(ch<50)number_trip=number_trip+1;
       if(ch<50)trip[number_trip]=tr;
       if(ch>60)mode=100;
       }
 
 
      int s1,s2;  
 
       for(s1=1;s1<number_trip;s1++){
       for(s2=s1+1;s2<number_trip+1;s2++){ 
       int x1=trip[s1];
       int x2=trip[s2];
       int p1=point_line(x1,x2);
      if(p1<1)number_line=number_line+1;
     if(p1<1)a_line[number_line]=x1;
     if(p1<1)b_line[number_line]=x2;
     if(p1<1)d_line[number_line]=met_line(s1,s2);
       }} 
 
 
       for(s1=1;s1<number_trip;s1++){
       for(s2=s1+1;s2<number_trip+1;s2++){ 
       int x1=trip[s1];
       int x2=trip[s2];
       int p1=point_line(x1,x2);
       int d1=d_line[p1];  
       int d2=met_line(s1,s2);
     if(d1>d2)d_line[p1]=d2;
       }} 
 
 
        }
 
 
 
          System.out.println(number_line);
 
    }
 
    int met_line(int s1,int s2){
 
    int m1,d2;
    int s;
    d2=0;
    for(s=s1;s<s2;s++){
    m1=point_line(trip[s],trip[s+1]);
    d2=d_line[m1]+d2;
    }
 
    return d2;
    }
 
 
     int point_line(int x1,int x2){
 
         int sx,h,px;
         px=0;
          for(sx=1;sx<number_line+1;sx++){
      h=0;
      if(a_line[sx]==x1)h=h+1;
      if(b_line[sx]==x2)h=h+1;
      if(h==2)px=sx;
          }  
 
  for(sx=1;sx<number_line+1;sx++){
      h=0;
      if(b_line[sx]==x1)h=h+1;
      if(a_line[sx]==x2)h=h+1;
      if(h==2)px=sx;
          }  
 
 
 
        return px; 
     }
 
 
 
     int check_trip(int delta){
 
        int s,ch;
        ch=0;
        for(s=1;s<number_trip+1;s++){
        if(trip[s]==delta)ch=100;    
        }
        return ch;
 
 
    }
 
     int search_trip(int delta){
 
        int sx,h,s;
        int[] z=new int[5000];
 
        s=0;
 
       for(sx=1;sx<number_line+1;sx++){
      if(a_line[sx]==delta)s=s+1;
      if(a_line[sx]==delta)z[s]=b_line[sx];
        }  
 
 
       for(sx=1;sx<number_line+1;sx++){
      if(b_line[sx]==delta)s=s+1;
      if(b_line[sx]==delta)z[s]=a_line[sx];
        }  
 
         double m1=s*Math.random();
         int m2=(int)(Math.floor(m1)+1);
 
 
     return z[m2];
 
 
    }
 
     int fast(){
        double n1=number*Math.random();
        int n2=(int)(Math.floor(n1))+1;
 
 
        return n2;
    }
 
}
 
最終更新:2015年05月05日 08:23