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