アットウィキロゴ

p0998x

package delya;
 
import tool.readfile;
 
 
public class pro {
 
 
    double[][] p=new double[3][3];
    double[][] q=new double[3][3];
    int[] point=new int[600];
  int[] delta=new int[600];
      double[][] v=new double[600][3];
  int[][] gotok=new int[600][3];
  int[] op=new int[600];
   double[] vs=new double[600];
  String[] data=new String[600];
  int datanumber;
 
    public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
        readfile sub3=new readfile();
   sub3.makedata("d.txt","UTF-8");
   data=sub3.data;
   datanumber=sub3.datanumber;
 
 
   int s;
   point[1]=1;
   vs[1]=Double.parseDouble(data[1]);   
   for(s=2;s<datanumber+1;s++){
    double x1=Double.parseDouble(data[s-1]);   
     double x2=Double.parseDouble(data[s]);   
   point[s]=2;
     if(x2>x1)point[s]=1;
   vs[s]=x1;
   }
 
 
 
 
        p[1][1]=0.8;
        p[2][2]=0.8;
        p[1][2]=0.2;
        p[2][1]=0.2;
 
        q[1][1]=0.8;
        q[2][2]=0.8;
        q[1][2]=0.2;
        q[2][1]=0.2;
 
 
        int de;
        for(de=1;de<101;de++){
 
        int sx=point[1];
        v[1][1]=p[1][sx];
        v[1][2]=p[2][sx];
 
        int tx;
 
        for(s=2;s<datanumber+1;s++){
        int p1=point[s];
        for(sx=1;sx<3;sx++){
        double u1=p[p1][sx];
       double maxv=-999;
       int sxs=0;
       for(tx=1;tx<3;tx++){
       double v1=v[s-1][tx]*u1*q[sx][tx];    
       if(v1>maxv)sxs=tx; 
       if(v1>maxv)maxv=v1; 
       }    
       gotok[s][sx]=sxs;
       v[s][sx]=maxv;
        }
       }
 
        sx=1;
        if(v[datanumber][2]>v[datanumber][1])sx=2;
 
 
        op[datanumber]=sx;
 
        for(s=1;s<datanumber;s++){
        sx=datanumber+1-s;
        int k=op[sx];    
        op[sx-1]=gotok[sx][k];
        }
 
 
        int[][] count=new int[3][3];
        int[][] ch=new int[3][3];
 
        count[1][1]=0;
        count[1][2]=0;
        count[2][1]=0;
        count[2][2]=0;
 
          ch[1][1]=0;
        ch[1][2]=0;
        ch[2][1]=0;
        ch[2][2]=0;
 
        for(s=1;s<datanumber+1;s++){
        int s1=point[s];
        int s2=op[s];
        count[s2][s1]=count[s2][s1]+1;
        }
 
        for(s=1;s<datanumber+1;s++){
        int s1=op[s];
        int s2=op[s+1];
        ch[s1][s2]=ch[s1][s2]+1;
        }
 
 
      int c1=count[1][1]+count[1][2];
double p1=0;
   if(c1>0)p1=100*count[1][1]/c1;      
      p1=p1/100;
    if(p1<0.6)p1=0.6; 
      if(p1<0.9*p[1][1])p1=0.9*p[1][1];      
       if(p1>1.1*p[1][1])p1=1.1*p[1][1];
       p[1][1]=p1;
       p[1][2]=1-p1;
 
         c1=count[2][1]+count[2][2];
p1=0;
   if(c1>0)p1=100*count[2][2]/c1;      
 
p1=p1/100;
      if(p1<0.6)p1=0.6; 
      if(p1<0.9*p[2][2])p1=0.9*p[2][2];      
       if(p1>1.1*p[2][2])p1=1.1*p[2][2];
       p[2][2]=p1;
       p[2][1]=1-p1;
 
 
           c1=ch[2][1]+ch[2][2];
p1=0;
   if(c1>0)p1=100*ch[2][2]/c1;      
      p1=p1/100;
      if(p1>0.9)p1=0.9; 
       if(p1<0.6)p1=0.6; 
      if(p1<0.9*q[2][2])p1=0.9*q[2][2];      
       if(p1>1.1*q[2][2])p1=1.1*q[2][2];
       q[2][2]=p1;
       q[2][1]=1-p1;
 
          c1=ch[1][1]+ch[1][2];
p1=0;
          if(c1>0)p1=100*ch[1][1]/c1;      
      p1=p1/100;
       if(p1<0.6)p1=0.6; 
       if(p1>0.9)p1=0.9; 
       if(p1<0.9*q[1][1])p1=0.9*q[1][1];      
       if(p1>1.1*q[1][1])p1=1.1*q[1][1];
       q[1][1]=p1;
       q[1][2]=1-p1;
 
 
 
 
        }
 
   for(s=1;s<datanumber+1;s++){      ;
   if(op[s]==1)System.out.println(s+","+110+","+vs[s]);
   if(op[s]==2)System.out.println(s+","+90+","+vs[s]);
   }
 
 
 
 
 
 
    }
 
 
 
 
}
 
最終更新:2016年04月30日 00:55