2059龟兔赛跑

来源:互联网 发布:python .如何使用 编辑:程序博客网 时间:2024/05/29 04:46
说这个是动态规划的经典题目,真是好难啊。想不通,还是参考了好多人的,哎,以后还要好好练练。
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;ins[i]=scanner.nextInt();}ns[n+1]=l;//存储终点的距离for(int i=1;ics[i]=0xFFFFF;for(int j=0;jif(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转doubleint a=3,b=5,c=9;double w=0.0;w=(a+b)/c*1.0;   //0.0System.out.println(w);w=(a+b)*1.0/c;  //0.88888888System.out.println(w);



1.0的位置会影响结果的。
0 0
原创粉丝点击