码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划解决hdu龟兔赛跑

时间:2019-10-05 14:23:38      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:else   直接   oid   solution   new   ace   比较   ann   解决   

import java.util.Scanner;

class test {
    private double dp[];//用来存储每段的最短时间
    private double p[];//用来存储每个充电站点离起点的距离
    private int n,c,t;
    private double vr,vt1,vt2;
    private double Length;
    
    public boolean Solution(){
        System.out.print("请输入每个站点离起点的距离:");
        Scanner iner=new Scanner(System.in);
        for(int i=1;i<=this.n;++i){
            p[i]=iner.nextInt();
        }
        double curTime=0;
        for(int i=1;i<=this.n+1;++i){
            double minTime=100000.0;
          for(int j=0;j<i;++j){
            if(c>p[i]){   //判断充满电后的距离能不能直接过站点
                curTime=p[i]/vt1;
            }else{
                curTime=c/vt1+(p[i]-c)/vt2;   //不加油的时间
            }
            //过站点时要分两种情况--一是加油,二是不加油
            if(j>0){    //考虑加油的情况
                 //1.加油时间上,加t秒
                 //2.提速时间上,减x秒
                 curTime=dp[i-1];
                 curTime+=t;
                if(p[i]-p[i-1] > c){
                  curTime+=c/vt1+(p[i]-p[i-1]-c)/vt2;
                }
                else{
                  curTime+=(p[i]-p[i-1])/vt1;
                }
            }
            if(curTime<minTime){     //然后再对两者进行比较
                minTime=curTime;
            }
          }
          dp[i]=minTime; 
        }
        int Time= (int) (this.Length / vr);
        if(dp[this.n+1]<Time){
            System.out.println("What a pity rabbit!");
        }else{
            System.out.println("Good job,rabbit!");
        }
        iner.close();
        return true;
    }
    
    public test(int l,int x,int y,int z,int k,int m,int n){
      this.Length=l;
      this.n=x;this.vr=k;
      this.c=y;this.vt1=m;
      this.t=z;this.vt2=n;
      p=new double[this.n+2];
      dp=new double[this.n+2];
      p[0]=0;p[this.n+1]=l;
    }
}



public class rabbit{
    public static void main(String[] args) {
        test space=new test(100,3,5,1,10,20,5);
        space.Solution();
    }
}

 

动态规划解决hdu龟兔赛跑

标签:else   直接   oid   solution   new   ace   比较   ann   解决   

原文地址:https://www.cnblogs.com/z2529827226/p/11624553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!