アットウィキロゴ

strlomg

class pro{

String str,ph;
int s,sx,sxs,t,tx,txs,dx,slong,strlong,tlong;
int dicnumber,mknumber,wordnumber;
String[] dic=new String[1000];
int[][] nph=new int[500][11];
double[][] v=new double[500][11];
double[] p=new double[1000];
double[] q=new double[1000];
int[][] gototx=new int[500][11];
int mk1[]=new int[1000];
int mk2[]=new int[1000];
int mx1,mx2,mx,mxs;
int h,z,xx;
double v1,maxv;
int[] op=new int[500];

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

pro(){

dicnumber=0;
mknumber=0;
p[0]=1;
q[0]=1;

str="";
strlong=str.length();


for(s=1;s<strlong+1;s++){
slong=s;
if(slong>10)slong=10;
for(sx=1;sx<slong+1;sx++){
ph=str.substring(s-sx,s);
nph[s][sx]=0;
for(dx=1;dx<dicnumber+1;dx++){
if(ph.equals(dic[dx]))nph[s][sx]=dx;
}
}
}


slong=strlong;
if(slong>10)slong=10;
for(s=1;s<slong+1;s++){
sx=nph[s][s];
v[s][s]=p[sx];  
}

mx1=nph[1][1];
mx2=nph[2][1];
mxs=0;
for(mx=1;mx<mknumber+1;mx++){
h=0;
if(mk1[mx]==mx1)h=h+1;
if(mk2[mx]==mx2)h=h+1;
if(h==2)mxs=mx;
}

v[2][1]=q[mxs]+v[1][1];  

for(s=3;s<strlong+1;s++){
slong=s-1;
if(slong>10)slong=10;
for(sx=1;sx<slong+1;sx++){
t=s-sx;
tlong=t;
if(tlong>10)tlong=10;
maxv=-999;
txs=0;
for (tx=1;tx<tlong+1;tx++){
mx1=nph[t][tx];
mx2=nph[s][sx];
mxs=0;
for(mx=1;mx<mknumber+1;mx++){
h=0;
if(mk1[mx]==mx1)h=h+1;
if(mk2[mx]==mx2)h=h+1;
if(h==2)mxs=mx;
}
v1=q[mxs]+v[t][tx];
if(v1>maxv)txs=tx;
if(v1>maxv)maxv=v1;
}
gototx[s][sx]=txs;
v[s][sx]=maxv;  
}
}

s=strlong;
maxv=-999;
sxs=0;
slong=strlong;
if(slong>10)slong=10;
for(sx=1;sx<slong+1;sx++){
if(v[s][sx]>maxv)sxs=sx;
if(v[s][sx]>maxv)maxv=v[s][sx];
}

System.out.println(sxs);

s=strlong;
sx=sxs;
op[1]=sx;
z=s-sx;
xx=1;
while(z>1){
t=s-sx;
tx=gototx[s][sx];
s=t;
sx=tx;
xx=xx+1;
op[xx]=sx;
z=s-sx;
}

wordnumber=xx;

System.out.println(wordnumber);








}


}
最終更新:2011年05月30日 11:15