アットウィキロゴ

Ste

package line3;
 
import tool.*;
import java.util.HashMap;
 
public class pro {
 
    int s,datanumber,sx;
    String[] data=new String[50000];
    String[] line=new String[50000];
    String[] sta=new String[50000];
    String[] com=new String[50000];
  String[] geo=new String[50000];
 
  int dicnumber;
  String[] dic_com=new String[50000];
  String[] dic_line=new String[50000];
   String[] dic_geo=new String[50000];
  int[] code=new int[50000];
  int number_geo;
 
  int[] a_line=new int[600000];
  int[] b_line=new int[600000];
  int[] d_line=new int[600000];
  int number_line;
int[][] chx=new int[1000][10000];
 
 
  HashMap<String,Integer> map = new HashMap<String,Integer>();
 
 
    public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
 
    readfile sub=new readfile();
    sub.makedata("linec.txt","UTF-8");
    data=sub.data;
    datanumber=sub.datanumber;
 
 
    for(s=1;s<datanumber+1;s++){
    catchword sub8=new catchword();
    sta[s]=sub8.makedata(data[s],"station");
    line[s]=sub8.makedata(data[s],"line");
    com[s]=sub8.makedata(data[s],"com");
    geo[s]=sub8.makedata(data[s],"geo"); 
    }
 
 
 
    dicnumber=0;
    int h,cc;
 
     for(s=1;s<datanumber+1;s++){
     cc=0;
     for(sx=1;sx<dicnumber+1;sx++){
     h=0;
     if(com[s].equals(dic_com[sx]))h=h+1;
     if(line[s].equals(dic_line[sx]))h=h+1;
     if(h==2)cc=100;
     }
     if(cc<50)dicnumber=dicnumber+1;
     if(cc<50)dic_line[dicnumber]=line[s];
     if(cc<50)dic_com[dicnumber]=com[s];
     }
 
 
      for(s=1;s<dicnumber+1;s++){
     System.out.println(s+","+dic_com[s]+","+dic_line[s]);
    }
 
     for(s=1;s<datanumber+1;s++){
     for(sx=1;sx<dicnumber+1;sx++){
     h=0;
     if(com[s].equals(dic_com[sx]))h=h+1;
     if(line[s].equals(dic_line[sx]))h=h+1;
     if(h==2)code[s]=sx;
     }
     }
 
     number_geo=0;
 
     for(s=1;s<datanumber+1;s++){
     cc=0;
     for(sx=1;sx<number_geo+1;sx++){
     if(geo[s].equals(dic_geo[sx]))cc=100;
     }
     if(cc<50)number_geo=number_geo+1;
     if(cc<50)dic_geo[number_geo]=geo[s];
     }
 
     for(sx=1;sx<number_geo+1;sx++){
     map.put(dic_geo[sx], sx);
     }
 
    System.out.println(dicnumber);
 
    int s1,s2;
    for(s=1;s<dicnumber+1;s++){
    for(sx=1;sx<number_geo+1;sx++){
    chx[s][sx]=0;
    }}
 
    for(s=1;s<datanumber+1;s++){
    s1=code[s];
    s2=map.get(geo[s]);
    chx[s1][s2]=100;
    }
 
    int tx,n;
    n=0;
    for(s=1;s<dicnumber;s++){
    for(sx=s+1;sx<dicnumber+1;sx++){
    cc=0;
    for(tx=1;tx<number_geo+1;tx++){
    h=0;
    if(chx[s][tx]>60)h=h+1;    
    if(chx[sx][tx]>60)h=h+1; 
    if(h==2)cc=100;
    }    
    if(cc>50)n=n+1;
    if(cc>50)a_line[n]=s;
    if(cc>50)b_line[n]=sx;
    if(cc>50)d_line[n]=1;
    }}
    number_line=n;
 
 
 
    int tr;
 
  for(tr=1;tr<1001;tr++){
 
   trip sub2=new trip();
  sub2.number=dicnumber;
  sub2.number_line=number_line;
 sub2.a_line=a_line;
 sub2.b_line=b_line;
 sub2.d_line=d_line;
  sub2.makedata();
  number_line=sub2.number_line;
 a_line=sub2.a_line;
 b_line=sub2.b_line;
 d_line=sub2.d_line;
 
 
 
 
     }
 
 sx=check_line(537,548); 
   System.out.println(sx+","+d_line[sx]);
 
    }
 
 
 
 
 
     int check_line(int s1,int s2){
 
 
 
     int sx,h,ch;
     ch=0;
     for(sx=1;sx<number_line+1;sx++){
      h=0;
     if(a_line[sx]==s1)h=h+1;
     if(b_line[sx]==s2)h=h+1;
     if(h==2)ch=sx;   
     }  
 
      for(sx=1;sx<number_line+1;sx++){
     h=0;
     if(b_line[sx]==s1)h=h+1;
      if(a_line[sx]==s2)h=h+1;
      if(h==2)ch=sx;
      }  
 
 
    return ch;
     }
 
 
 
 
    }
 
 
 
 
 
package line3;
 
public class trip {
 
    int number_line;
  int[] a_line=new int[10001];
  int[] b_line=new int[10001];
  int[] d_line=new int[10001];
 
  int number;
 
 
  int number_trip;
  int[] trip=new int[100001];
 
    void makedata(){
 
 
        gototrip();
  int s1,s2;      
 
  for(s1=1;s1<number_trip;s1++){
  for(s2=s1+1;s2<number_trip+1;s2++){
  int p=check_line(s1,s2);
  if(p>0)number_line=number_line+1;
  if(p>0)a_line[number_line]=trip[s1];
  if(p>0)b_line[number_line]=trip[s2];
  if(p>0)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 p=check_line(s1,s2);
  int d21=99999;
  if(p>50)d21=met_line(s1,s2);
  int d22=0;
 if(p>50)d22=d_line[p];
  if(d22>d21)d_line[p]=d21;
  }
  }
 
 
 
    }
 
 
     int check_line(int s1,int s2){
 
     int t1=trip[s1];
     int t2=trip[s2];
 
     int sx,h,chx;
     chx=0;
     for(sx=1;sx<number_line+1;sx++){
      h=0;
     if(a_line[sx]==t1)h=h+1;
     if(b_line[sx]==t2)h=h+1;
     if(h==2)chx=sx;   
     }  
 
      for(sx=1;sx<number_line+1;sx++){
     h=0;
     if(b_line[sx]==t1)h=h+1;
      if(a_line[sx]==t2)h=h+1;
      if(h==2)chx=sx;
      }  
 
 
    return chx;
     }
 
 
     int met_line(int s1,int s2){
 
         int m1,d2;
         m1=0;
    int t1,t2,s;
    d2=0;
    for(s=s1;s<s2;s++){
    t1=trip[s];
    t2=trip[s+1];
    int mm=check_line(t1,t2);
    d2=d_line[mm]+d2;
    }
 
 
 
    return d2;
     }
 
 
 
 
 
 
     void gototrip(){
 
 
  int m=fast();
 
  number_trip=1;
  trip[1]=m;
  int mode=0; 
  while(mode<50){
  int m1=search(trip[number_trip]);
  int ch=check(m1);
  if(ch>50)mode=100;
  if(ch<50)number_trip=number_trip+1;
  if(ch<50)trip[number_trip]=m1;
  }
 
 
    }
 
       int check(int delta){
 
        int s,ch;
        ch=0;
        for(s=1;s<number_trip+1;s++){
        if(trip[s]==delta)ch=100;    
        }
        if(delta==0)ch=100;
 
        return ch;
 
 
    }
 
 
 
      int search(int delta){
 
        int sx,h,s;
        int[] z=new int[9000];
        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);
 
         z[0]=0;
 
 
     return z[m2];
 
 
    }
 
 
 
 
 
 
    int fast(){
        double n1=number*Math.random();
        int n2=(int)(Math.floor(n1))+1;
 
 
        return n2;
    }
 
 
}
 
最終更新:2015年05月06日 14:32