2059龟兔赛跑

说这个是动态规划的经典题目,真是好难啊。想不通,还是参考了好多人的,哎,以后还要好好练练。
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的位置会影响结果的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值