import java.io.*;
public class clu{
int s,sx,sxs,datanumber,articlenumber;
String[] data=new String[50000];
String[] ske=new String[101];
int[] ns=new int[101];
String[] dic=new String[50000];
int[][] num=new int[1000][30000];
double[][] rate=new double[901][101];
int[] gr=new int[901];
int xlong,h,dicnumber;
String file;
double z1;
int n,t,tx,ts,txs;
double m1,minx;
public static void main(String[] args){
clu test=new clu();
}
clu(){
readfile("lib.txt");
for(s=1;s<datanumber+1;s++){
dic[s]=data[s];
}
readfile("100.txt");
for(s=1;s<101;s++){
ske[s]=data[s];
}
dicnumber=datanumber;
for(s=1;s<101;s++){
sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(ske[s].equals(dic[sx]))sxs=sx;
}
ns[s]=sxs;
}
readfile("data.txt");
articlenumber=datanumber;
for(s=1;s<datanumber+1;s++){
String[] x=data[s].split(",");
xlong=x.length;
for(sx=1;sx<xlong+1;sx++){
num[s][sx]=Integer.parseInt(x[sx-1]);
}
}
for(t=1;t<901;t++){
z1=0;
for(s=1;s<101;s++){
sx=ns[s];
z1=z1+num[t][sx];
}
for(s=1;s<101;s++){
if(z1>0)rate[t][s]=(double)num[t][s]/z1;
}
}
for(s=1;s<901;s++){
gr[s]=s;
}
for(n=1;n<100;n++){
t=0;
tx=0;
minx=9999;
for(s=1;s<901;s++){
for(sx=1;sx<901;sx++){
m1=met(s,sx);
h=0;
if(m1<minx)h=100;
if(gr[s]==gr[sx])h=0;
if(h>50)minx=m1;
if(h>50)t=s;
if(h>50)tx=sx;
}
}
System.out.println(t);
System.out.println(tx);
System.out.println(minx);
ts=gr[t];
txs=gr[tx];
for(s=1;s<901;s++){
if(gr[s]==txs)gr[s]=ts;
}
}
}
double met(int t1,int t2){
double m1,m2;
int t,h;
m2=0;
for(t=1;t<101;t++){
m1=rate[t1][t]-rate[t2][t];
m2=m2+m1*m1;
}
h=0;
for(t=1;t<101;t++){
if(rate[t1][t]==0)h=h+1;
}
if(h==100)m2=9999;
h=0;
for(t=1;t<101;t++){
if(rate[t2][t]==0)h=h+1;
}
if(h==100)m2=9999;
return m2;
}
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;
}
void writefile(){
try{
PrintWriter pw = new PrintWriter
(new BufferedWriter(new FileWriter("data.txt")));
for(s=1;s<901;s++){
for(sx=1;sx<dicnumber;sx++){
pw.print(num[s][sx]);
pw.print(",");
}
sx=dicnumber;
pw.println(num[s][sx]);
}
System.out.println("ファイルに書きこみました。");
pw.close();
}
catch(IOException ep){ System.out.println("入出力エラーです。"); }
}
}
最終更新:2011年06月19日 11:13