アットウィキロゴ

clus

package clu;
 
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
 
 
public class pro {
 
    int s,datanumber;
    String[] data=new String[5000];
int[][] point=new int[2000][151];
     String[] name=new String[5000];
    double[][] v=new double[1300][1300];
    int number;
    int[][] group=new int[2000][2000];
    int[] number_g=new int[2000];
    int[] life=new int[2000];
     public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
        int tr=0;
        int p;
        for(tr=1;tr<1234;tr++){
        readx("data/"+tr+".txt");
 
 
 
 
 
            int delta=datanumber;
            if(delta>100)delta=100;
 
        for(s=1;s<delta+1;s++){
 
     String[] x=data[s].split(",");
     name[tr]=x[0]; 
     point[tr][s]=numx(x[3]);   
        }
 
 
 
        }
     int s1,s2;   
     for(s1=1;s1<1234;s1++){
     for(s2=1;s2<1234;s2++){
     v[s1][s2]=f(s1,s2);
     }}
 
    number=1233;
 
 for(s=1;s<number+1;s++){
    group[s][1]=s;
number_g[s]=1;
life[s]=100;
    }
 
 int de;
 for(de=1;de<number;de++){
 
 double d1=0;
 int sx;
 int g1=0;
 int g2=0;
 double mp=400000; 
 for(s=1;s<number+1;s++){
 for(sx=1;sx<number+1;sx++){
 int z=0;
 if(s==sx)z=100;
 if(life[s]<50)z=100;
 if(life[sx]<50)z=100;
 d1=30000000;
 if(z<50)d1=met(s,sx);
 if(d1<mp)g1=s;
 if(d1<mp)g2=sx;
 if(d1<mp)mp=d1;
 }}
 
 life[g2]=0;
 for(s=1;s<number_g[g2]+1;s++){
 sx=number_g[g1]+s;
 group[g1][sx]=group[g2][s];    
 }
 
 number_g[g1]=number_g[g1]+number_g[g2];
 
 }
 
 
 
 for(s=1;s<number;s++){
 if(number_g[s]>100)System.out.println(s+","+name[s]);
 }
 
 for(s=1;s<number_g[6]+1;s++){
 int sx=group[6][s];
 System.out.println(name[sx]);
 }
 
 
    }
     double met(int g1,int g2){
 
         int s,sx;
         double maxpoint=500000; 
 
          for(s=1;s<number_g[g1]+1;s++){
         for(sx=1;sx<number_g[g2]+1;sx++){
             int p1=group[g1][s];
              int p2=group[g2][sx];
             double e1=v[p1][p2];
         if(e1<maxpoint)maxpoint=e1;
         }}
         return maxpoint;
     }
 
    double f(int s1,int s2){
    int s;
    double e2=0; 
        for(s=1;s<101;s++){
        int e1=point[s1][s]-point[s2][s];
        e2=e2+e1*e1;
        }
        e2=Math.sqrt(e2)/100;
 
        return e2;
    }
 
    void readx(String file){
 
String str;
BufferedReader br;  
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));  
while((str = br.readLine()) != null) {  
s=s+1;
data[s]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}  
 
datanumber=s;
 
} 
 
      int numx(String str){
 
    int nx;
 
    nx=0;
 
 try{
 
    nx=Integer.parseInt(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
 
}
 
最終更新:2016年08月31日 16:52