动态规划解决hdu龟兔赛跑

Posted z2529827226

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划解决hdu龟兔赛跑相关的知识,希望对你有一定的参考价值。

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龟兔赛跑的主要内容,如果未能解决你的问题,请参考以下文章

#2059:龟兔赛跑(动态规划dp)

HDU246饭卡(01背包/动态规划)

『嗨威说』算法设计与分析 - 动态规划思想小结(HDU 4283 You Are the One)

分弹珠(动态规划+多重背包)- HDU 1059

最短路(Floyd算法的动态规划本质)- HDU 2544

hdu 2571 动态规划