アットウィキロゴ

うytgfb

class pro{

String str;
String[] ph=new String[500];
String[] word=new String[500];
String[] dic=new String[500];
int[] np=new int[500];
int[] nword=new int[500];  
int s,sx,sxs,phnumber,dicnumber,wordnumber;
double[] p=new double[10000];
double[] q=new double[10000];
double p1,point,maxpoint;
int[][] mk=new int[1000][100];
int[] mknumber=new int[1000];
int[] num=new int[1000];
int t1,t,tr;
int h;

public static void main(String args[]){
pro test=new pro();
}

pro(){

dicnumber=0;
p[0]=1;

str="昼はたるい";

t=0;
for(tr=1;tr<1000;tr++){
t=t+1;
if(t>999)t=1;

maxpoint=-999;
for(t1=1;t1<11;t1++){

makeph mkph=new makeph();
mkph.makedata(str);
ph=mkph.ph;
phnumber=mkph.phnumber;

for(s=1;s<phnumber+1;s++){
np[s]=0;
for(sx=1;sx<dicnumber+1;sx++){
if(ph[s].equals(dic[sx]))np[s]=sx;
}
}

sx=np[1];
point=p[sx];
for(s=1;s<phnumber;s++){
p1=price(np[s],np[s+1]);  
point=p1*point;
}

if(point>maxpoint)word=ph;
if(point>maxpoint)wordnumber=phnumber;
if(point>maxpoint)maxpoint=point;
}


for(s=1;s<wordnumber+1;s++){
h=0;
for(sx=1;sx<dicnumber+1;sx++){
if(word[s].equals(dic[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)dic[dicnumber]=word[s];
}


for(s=1;s<wordnumber+1;s++){
sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(word[s].equals(dic[sx]))sxs=sx;
}
nword[s]=sxs;
}

System.out.println(wordnumber);

for(s=1;s<dicnumber+1;s++){
num[s]=0;
}

for(s=1;s<wordnumber+1;s++){
sx=nword[s];
num[sx]=num[sx]+1;  
}

for(s=1;s<dicnumber+1;s++){
q[s]=(double)num[s]/wordnumber;
}

for(s=1;s<dicnumber+1;s++){
p[s]=0.1*q[s]+0.9*p[s];
}


mknumber[t]=wordnumber;
for(s=1;s<wordnumber+1;s++){
mk[t][s]=nword[s];
}



}


}

double price(int m1,int m2){
double p1,p2,px;  
int tx;
int h;
px=0.01;
p1=0;
p2=0;
for(tx=1;tx<1000;tx++){
for(sx=1;sx<mknumber[tx];sx++){
if(mk[tx][sx]==m1)p1=p1+1;
}
}  
for(tx=1;tx<1000;tx++){
for(sx=1;sx<mknumber[tx];sx++){
h=0;
if(mk[tx][sx]==m1)h=h+1;
if(mk[tx][sx+1]==m2)h=h+1;
if(h==2)p2=p2+1;
}
}
if(p1>0)px=(double)p2/p1;
if(px<0.01)px=0.01;
return px;
}





}
最終更新:2011年05月24日 09:15