アットウィキロゴ

景気

package ren;
 
import tool.*;
 
public class pro {
 
    String[] data=new String[5000];
    int s,datanumber,sx;
     double[] point=new double[5000];
      double[][][] v=new double[500][3][110];
        int[][][] gotos=new int[500][3][110];
        int[][][] gotoc=new int[500][3][110];
     double minp,maxp;
  double delta;
     int[] route_s=new int[500];
  int[] route_c=new int[500];
 
    public static void main(String[] args) {
       pro test=new pro();
    }
 
    pro(){
 
        readfile sub=new readfile();
        sub.makedata("data.txt","UTF-8");
        data=sub.data;
        datanumber=sub.datanumber;
 
        for(s=1;s<datanumber+1;s++){
        point[s]=Double.parseDouble(data[s]);
        }
 
        minp=999;
        maxp=0;
 
 
        for(s=1;s<datanumber+1;s++){
        if(point[s]>maxp)maxp=point[s];
        if(point[s]<minp)minp=point[s];
        }
 
        System.out.println(maxp+","+minp);
 
        delta=(maxp-minp)/100;
 
        double x1,e1,v1;
        int tx;
 
        for(sx=0;sx<101;sx++){
        x1=minp+sx*delta;
        e1=(x1-point[s])*(x1-point[s]);
        v[1][1][sx]=e1;
        v[1][2][sx]=e1;
        }
 
        double minv;
        int txs,c,cx,cxs;
        int h;
 
        for(s=1;s<datanumber+1;s++){
        for(sx=0;sx<101;sx++){   
        for(c=1;c<3;c++){
        x1=minp+sx*delta;
        e1=(x1-point[s])*(x1-point[s]); 
        minv=99999;
        txs=0;
        cxs=0;
        for(cx=1;cx<3;cx++){  
        for(tx=0;tx<101;tx++){   
        v1=e1+v[s-1][cx][tx];
        h=0;
        if(c==1)h=h+1;
        if(tx>sx)h=h+1;
        if(h==2)v1=99999;
        h=0;
        if(c==2)h=h+1;
        if(sx>tx)h=h+1;
        if(h==2)v1=99999;
        if(v1<minv)txs=tx;
         if(v1<minv)cxs=cx;
        if(v1<minv)minv=v1;
        }
        }
        v[s][c][sx]=minv;
        gotos[s][c][sx]=txs;
        gotoc[s][c][sx]=cxs;
        }    
        }
        }
 
        int sxs;
 
        minv=999;
        s=datanumber;
        sxs=0;
        cx=0;
        for(sx=0;sx<101;sx++){ 
        for(c=1;c<3;c++){ 
        if(v[s][c][sx]<minv)cx=c;
        if(v[s][c][sx]<minv)sxs=sx;
        if(v[s][c][sx]<minv)minv=v[s][c][sx];
        }
        }
        System.out.println(sxs+","+cx+","+minv);
 
        route_s[datanumber]=sxs;
        route_c[datanumber]=cx;
 
        for(s=1;s<datanumber;s++){
        cx=route_c[datanumber+1-s];
        sx=route_s[datanumber+1-s];
        route_c[datanumber-s]=gotoc[datanumber+1-s][cx][sx];    
        route_s[datanumber-s]=gotos[datanumber+1-s][cx][sx]; 
        }
 
        double p1;
 
 
        for(s=1;s<datanumber+1;s++){
        sx=route_s[s];
        p1=minp+sx*delta;
        System.out.println(point[s]+","+p1);
        }
 
 
 
 
 
    }
}
 
最終更新:2014年03月06日 07:53