2059龟兔赛跑

    xiaoxiao2021-03-26  33

    说这个是动态规划的经典题目,真是好难啊。想不通,还是参考了好多人的,哎,以后还要好好练练。 import java.util.Scanner; //找出乌龟每一次的最短时间 比每个都遍历一遍强很多 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ int l,n,c,t,vr,vt1,vt2,w=1;//vt1乌龟开电动车的速度,vt2乌龟脚蹬电动车的速度 double rr=0.0;double tt=0.0; l=scanner.nextInt(); n=scanner.nextInt(); c=scanner.nextInt(); t=scanner.nextInt(); vr=scanner.nextInt(); vt1=scanner.nextInt(); vt2=scanner.nextInt(); int ns[]=new int[n+2]; double cs[]=new double[n+2];//装到充电点的时间,最短的包括起点,终点 rr=l*1.0/vr; for(int i=1;i ns[i]=scanner.nextInt(); } ns[n+1]=l;//存储终点的距离 for(int i=1;i cs[i]=0xFFFFF; for(int j=0;j if(ns[i]-ns[j]>c){ tt=c*1.0/ vt1+(ns[i]-ns[j]-c)*1.0/ vt2; }else{ tt=(ns[i]-ns[j])*1.0/ vt1; } if(j>0){//从一个点到另一个点 表示充电出发了 tt+=t; } tt+=cs[j];//cs是从起点到此充电点的总时间,之前点的最短时间已经记录了。 cs[i]= cs[i] > tt ? tt : cs[i];//tt表示当前这种选择达到此充电点的时间 } }// if(cs[n+1] System.out.println("What a pity rabbit!"); }else{ System.out.println("Good job,rabbit!"); } } } } 我有个坑了很久是因为int转double int a=3,b=5,c=9; double w=0.0; w=(a+b)/c*1.0; //0.0 System.out.println(w); w=(a+b)*1.0/c; //0.88888888 System.out.println(w); 1.0的位置会影响结果的。
    转载请注明原文地址: https://ju.6miu.com/read-450363.html

    最新回复(0)