实在是想不明白了,求解惑,下面是我写的代码,只能通过部分测试点,比较两者到达终点前的时间大小,狮鹫算的是终点前一步的时间,还有这个不一定按最最优路径走,理解的事是同行或同列要多走两步到终点,想知道哪里错了,和如何实现
{#include <stdio.h>
#include<math.h>
int main(){
int x1,y1,x2,y2,x3,y3;
double speed1,speed2;
double t1,t2,t3,t4,t5;
double zd,od;
scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
scanf("%lf%lf",&speed1,&speed2);
zd=abs(x3-x2)+abs(y3-y2);
od=abs(x2-x1)+abs(y2-y1);
if(x1==x2 && x2==x3){
if((y3>y1 && y1>y2) || (y3<y1 && y1<y2)){
zd+=2;
}
}
if(y1==y2 && y2==y3){
if((x3>x1 &&x1>x2) || (x3<x1 &&x1<x2)){
zd+=2;
}
}
t1=zd*1.0/(speed2*1.0);
t2=od*1.0/(speed1*1.0)+zd*1.0/(speed1*1.0);
t4=(zd-1.0)*1.0/(speed2*1.0);
t5=od*1.0/(speed1*1.0)+(zd-1.0)*1.0/(speed1*1.0);
if(x1==x2 && y1==y2){
t1=2;
t2=1;
}
if(x2==x3 && y2==y3){
t1=1;
t2=2;
}
if(t1>t5){
printf("No");
}
else{
printf("Yes");
}
return 0;
}}