课后练习 1.2

个人做的课后练习

书籍:算法设计与分析基础(第三版)

习题1.2

一.
百度上有具体的解法。
主要思路就是转为图,然后寻找路径。

二.
在第一题的基础之上,转为图,然后给每一条边都加权,计算最小的路径就可以了。

三.
a. 显然 海伦公式可以作为三角形面积的算法。只需要知道三条边就算出已知图形的面积。
b. S=1/2 * bc * sin A 也可以作为三角形面积的算法。但是我们需要利用余弦定理 计算出 cos A 的值,然后再利用三角恒等变换求出 sin A。
c. 和b类似

四.
利用 一元二次方程的求根公式就可以计算出两个实数根了。

Solve(a,b,c)
 delta←b*b-4*a*c
 A←null
 if delta > 0
     temp←sqrt(delta)
     A[0]←(-b+temp)/(2*a)
     A[1]←(-b-temp)/(2*a)
 else if delta ==0
     A[0]←-b/(2*a)
 return A

五.
a.
不断地除二求余,直到商为零为止。余数的排序是从低到高。
b.

Binary(n)
 if n/2>0
   Binary(n/2)
 print( n%2 )

八.
最小公倍数的算法。例如:两个数为 m和n
有多种计算方式

lcm(m,n)
 return m*n/gcd(m,n)
lcm(m,n)
 for i←max(m,n) to m*n do
     if i%m==0 && i%n==0
         return i

普通情况,显然第一种比较快

九.
可以先排序,然后再比较相邻两个数字之间的差

MinDistanceA[0..n-1]sort(A[0..n-1])
 dmin←∞
 for i←0 to n-2 do
     A[i+1]-A[i] < dminA[i+1]-A[i] : dmin
 return dmin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值