アットウィキロゴ

jk2

package k;
 
import tool.*;
 
public class pro {
 
    String[] data=new String[6000];
    int s,datanumber;
    String file;
    double[] point=new double[600];
 
     double[] px=new double[600];
 
    double[] m=new double[700];
    double[] v=new double[700];
    int k;
    double v1,minv;
     int[] gotom=new int[700];
    int[] gotov=new int[700];
    int ks;
    int[] mou=new int[700];
    int[] val=new int[700];
    int[] m2=new int[700];
    int[] v2=new int[700];
    int number;
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
  pro(){  
 
      file="data.txt";
 
      readfile sub=new readfile();
      sub.makedata(file,"UTF-8");
      data=sub.data;
      datanumber=sub.datanumber;
 
      for(s=1;s<datanumber+1;s++){
      point[s]=Double.parseDouble(data[s]);
      }
 
      for(s=2;s<7;s++){
      m[s]=mfast(s);
      v[s]=vfast(s);
      }
 
      for(s=7;s<datanumber+1;s++){
 
      minv=mfast(s);
 
      ks=0;
      for(k=2;k<s-5;k++){
      v1=seekm(s,k);
      if(v1<minv)ks=k; 
      if(v1<minv)minv=v1;    
      }
      m[s]=minv;
      gotom[s]=ks;
 
      minv=vfast(s);
      ks=0;
      for(k=2;k<s-5;k++){
      v1=seekv(s,k);
      if(v1<minv)ks=k; 
      if(v1<minv)minv=v1;    
      }
      v[s]=minv;
      gotov[s]=ks;
 
      }
 
 
 
      int s1,s2,mode,sx;
      s2=datanumber;
      mode=0;
      sx=0;
      while(mode<50){
      s1=gotom[s2];
      s2=gotov[s1];
      if(s1<10)mode=100;
      if(s2<10)mode=100;
      sx=sx+1;
      v2[sx]=s1;
      m2[sx]=s1;
      }
      number=sx; 
 
      for(s=1;s<number+1;s++){
      mou[s]=m2[number+1-s];
      val[s]=v2[number+1-s];
      }
 
      s=1;
      px[s]=point[s];
      for(sx=2;sx<mou[s]+1;sx++){
      px[sx]=point[sx];
      if(point[s]<px[s-1])px[s]=px[s-1];
      }
      for(s=1;s<number;s++){
      for(sx=mou[s]+1;sx<val[s]+1;sx++){
      px[sx]=point[sx];
      if(point[sx]>px[sx-1])px[sx]=px[sx-1];
      }    
      for(sx=val[s]+1;sx<mou[s+1]+1;sx++){
      px[sx]=point[sx];
      if(point[sx]<px[sx-1])px[sx]=px[sx-1];
      }    
      }
 
 
      for(s=1;s<datanumber+1;s++){
      System.out.println(s+","+point[s]+","+px[s]);    
      }
 
 
 
 
 
 }
 
double seekm(int s,int k){
int sx;
double e1;
double[] p=new double[600];
p[k]=point[k];    
for(sx=k+1;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]>point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=k+1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
e1=e1+v[k];
return e1;
}
 
 double seekv(int s,int k){
int sx;
double e1;
double[] p=new double[600];
p[k]=point[k];    
for(sx=k+1;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]<point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=k+1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
e1=e1+m[k];
return e1;
}
 
 
 
double mfast(int s){
int sx;
double e1;
double[] p=new double[600];
p[1]=point[1];    
for(sx=2;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]>point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
return e1;
}
double vfast(int s){
int sx;
double e1;
double[] p=new double[600];
p[1]=point[1];    
for(sx=2;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]<point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
return e1;
}
}
 
最終更新:2014年02月28日 05:07