import java.io.*;
public class pro{
int s,sx,sxs,datanumber;
String[] data=new String[50000];
String[] dic=new String[50000];
String[] ske=new String[101];
String[] author=new String[1000];
String[] credit=new String[33];
int[] ndic=new int[101];
int[] ncredit=new int[33];
int dicnumber,authornumber;
int[][] num=new int[40][200];
double[][] rate=new double[40][200];
int s1,s2,sx1,sx2;
int t,z1;
int[] gr=new int[51];
int[][] route=new int[51][51];
double minmx,mx;
public static void main(String[] args){
pro test=new pro();
}
pro(){
readfile("lib.txt");
dicnumber=datanumber;
for(s=1;s<dicnumber+1;s++){
dic[s]=data[s];
}
readfile("100.txt");
for(s=1;s<101;s++){
ske[s]=data[s];
}
for(s=1;s<101;s++){
sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(ske[s].equals(dic[sx]))sxs=sx;
}
ndic[s]=sxs;
}
readfile("author.txt");
authornumber=datanumber;
for(s=1;s<authornumber+1;s++){
author[s]=data[s];
}
readfile("33.txt");
for(s=1;s<33;s++){
credit[s]=data[s];
}
for(s=1;s<33;s++){
sxs=0;
for(sx=1;sx<authornumber+1;sx++){
if(credit[s].equals(author[sx]))sxs=sx;
}
ncredit[s]=sxs;
}
readfile("data.txt");
for(s=1;s<33;s++){
s1=ncredit[s];
String[] x=data[s1].split(",");
for(sx=1;sx<101;sx++){
s2=ndic[sx]-1;
num[s][sx]=Integer.parseInt(x[s2]);
}
}
for(s=1;s<33;s++){
z1=0;
for(sx=1;sx<101;sx++){
z1=z1+num[s][sx];
}
for(sx=1;sx<101;sx++){
rate[s][sx]=(double)num[s][sx]/z1;
}
}
for(s=1;s<33;s++){
gr[s]=s;
}
for(t=15;t<25;t++){
sx1=0;
sx2=0;
minmx=9999;
for(s1=1;s1<33;s1++){
for(s2=1;s2<33;s2++){
mx=met(s1,s2);
if(s1==s2)mx=9999;
if(mx<minmx)sx1=s1;
if(mx<minmx)sx2=s2;
if(mx<minmx)minmx=mx;
}
}
for(s=1;s<33;s++){
if(gr[s]==sx2)gr[s]=sx1;
}
System.out.println(77);
for(s=1;s<33;s++){
System.out.print(credit[s]);
System.out.print(",");
System.out.println(gr[s]);
}
}
}
double met(int s1,int s2){
int t,tx,h,c;
double minx,mx,mm,c1;
minx=9999;
for(t=1;t<33;t++){
for(tx=1;tx<33;tx++){
c1=0;
for(c=1;c<101;c++){
c1=c1+(rate[t][c]-rate[tx][c])*(rate[t][c]-rate[tx][c]);
}
mx=9999;
h=0;
if(gr[t]==s1)h=h+1;
if(gr[tx]==s2)h=h+1;
if(h==2)mx=c1;
if(mx<minx)minx=mx;
}
}
return minx;
}
void readfile(String file){
String str;
BufferedReader br;
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));
while((str = br.readLine()) != null) {
s=s+1;
data[s]=str;
}
br.close();
} catch (IOException e) {System.out.println(e);}
datanumber=s;
}
}
最終更新:2011年06月23日 16:11