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