学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
小明在纸上画了n个横坐标均不相同的点,最左边的点称为起点,最右边的点称为终点,现要寻找一条从起点到终点需经过n-1个点的折线,要求折线的长度最小。

算法思想:先将相邻点连接,并计算出折线总长度,再找出所有相邻三个点的最大距离差值,总长度减去最大距离差值即为折线的最小长度。如图a所示,对于相邻的任意三点,有两种连法:一是从A点直接连到C点,二是从A点连到B点再连到C点,两种方法的距离差值为dist a + dist b - dist c。



完成该项目分以下几个步骤:
(1)读取坐标数据,分别存储在列表x和y中。点的坐标(x,y)保存在文本文件“point.txt”中(已按x坐标升序排列),数据格式如图b所示。划线处应填入代码为______

f=open("point,txt",'r') #从文件中读取坐标位置

x=[];y=[]       #分别存储在列表x和y中

line=f.readline()          #取出一行数据

while line:       

data=line. split(",")       #以逗号为分隔符转换成列表

x.append(int(data[0])) #添加到列表x中

_______

line=f.readline()

f.close()                  #关闭文件


(2)编写函数,计算两点间的距离。请在划线处填入合适的代码。

from math import sqrt                  #函数sqrt的功能是计算平方根

def dist(x1,y1,x2,y2):        #计算(x1,y1)到(x2,y2)的距离

d=______

return d


(3)设计算法与程序实现。根据上述算法编写的Python程序如下,请在划线处填入合适的代码。

n=len(x);total=0

for i in range(l,n):

tota1+=_______

maxd=0

for i in range(2,n):

d1=dist(x[i-2],y[i-2],x[i-1],y[i-1])

d2=dist(x[i-l],y[i-1],x[i],y[i])

d3=dist(x[i-2],y[i-2],x[i],y[i])

__________

if dx > maxd:

maxd = dx

print("折线的最小长度为:"+str(round((           )4)))   #保留4位小数

编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交