帮忙解一道pascal题目,有程序的.有个正方形房间,边长为10m,入口为左下角(0,0),出口为右上角(10,10),其中有些石头,横坐标Xi为整数,纵坐标Yi为实数,现在你的最大跳跃距离为k米,且只能向右上方或
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/08 19:12:14
![帮忙解一道pascal题目,有程序的.有个正方形房间,边长为10m,入口为左下角(0,0),出口为右上角(10,10),其中有些石头,横坐标Xi为整数,纵坐标Yi为实数,现在你的最大跳跃距离为k米,且只能向右上方或](/uploads/image/z/1581786-18-6.jpg?t=%E5%B8%AE%E5%BF%99%E8%A7%A3%E4%B8%80%E9%81%93pascal%E9%A2%98%E7%9B%AE%2C%E6%9C%89%E7%A8%8B%E5%BA%8F%E7%9A%84.%E6%9C%89%E4%B8%AA%E6%AD%A3%E6%96%B9%E5%BD%A2%E6%88%BF%E9%97%B4%2C%E8%BE%B9%E9%95%BF%E4%B8%BA10m%2C%E5%85%A5%E5%8F%A3%E4%B8%BA%E5%B7%A6%E4%B8%8B%E8%A7%92%280%2C0%29%2C%E5%87%BA%E5%8F%A3%E4%B8%BA%E5%8F%B3%E4%B8%8A%E8%A7%92%2810%2C10%29%2C%E5%85%B6%E4%B8%AD%E6%9C%89%E4%BA%9B%E7%9F%B3%E5%A4%B4%2C%E6%A8%AA%E5%9D%90%E6%A0%87Xi%E4%B8%BA%E6%95%B4%E6%95%B0%2C%E7%BA%B5%E5%9D%90%E6%A0%87Yi%E4%B8%BA%E5%AE%9E%E6%95%B0%2C%E7%8E%B0%E5%9C%A8%E4%BD%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%B3%E8%B7%83%E8%B7%9D%E7%A6%BB%E4%B8%BAk%E7%B1%B3%2C%E4%B8%94%E5%8F%AA%E8%83%BD%E5%90%91%E5%8F%B3%E4%B8%8A%E6%96%B9%E6%88%96)
帮忙解一道pascal题目,有程序的.有个正方形房间,边长为10m,入口为左下角(0,0),出口为右上角(10,10),其中有些石头,横坐标Xi为整数,纵坐标Yi为实数,现在你的最大跳跃距离为k米,且只能向右上方或
帮忙解一道pascal题目,有程序的
.有个正方形房间,边长为10m,入口为左下角(0,0),出口为右上角(10,10),其中有些石头,横坐标Xi为整数,纵坐标Yi为实数,现在你的最大跳跃距离为k米,且只能向右上方或正右方或右下方跳跃,求你从入口到出口的路径长度最小为多少(保留两位小数),若无法到达出口,则输出-1.
【输入】
第一行N,K(N
帮忙解一道pascal题目,有程序的.有个正方形房间,边长为10m,入口为左下角(0,0),出口为右上角(10,10),其中有些石头,横坐标Xi为整数,纵坐标Yi为实数,现在你的最大跳跃距离为k米,且只能向右上方或
献上一个简单的dfs..
uses math;
var i,j,k,n:longint;
m,d:real;
map:array[0..110,0..110]of real;
x,y:array[0..110]of real;
dis:array[0..110]of real;
procedure dfs(p:integer;d:real);
var i:longint;
begin
dis[p]:=d;
for i:=1 to n do
if(map[p,i]>0)and((dis[i]=0)or(dis[i]>dis[p]+map[p,i]))then
dfs(i,dis[p]+map[p,i]);
end;
begin
readln(n,m);
for i:=1 to n do
readln(x[i],y[i]);
inc(n);
x[n]:=10;
y[n]:=10;
for i:=0 to n do begin
for j:=0 to n do begin
if(i=j)or(x[i]>=x[j])then
continue;
d:=sqrt((x[i]-x[j])**2+(y[i]-y[j])**2);
if(d<=m)then
map[i,j]:=d;
end;
end;
dfs(0,0);
writeln(dis[n]:0:2);
end.