算法第二章上机实践报告
- 实践题目名称:派
- 问题描述:给定两个整数n和f,分别代表派的数量,f+1表示需要分得派的人数。随后给出每个派的体积,要求每人分得的派体积相同,且分得的派只能来自一个派,求每人所能分得的最大派的体积。
- 算法描述:我们可以得知分得的派体积在(0,最大派体积]之间,因此,我们可以采用二分法一步步找到最优的答案。如果中间的体积是存在的派里能分得的,我们就可以把体积范围缩小到右半部分,如果不满足条件,就可以把范围缩小到左半部分,直到体积范围小于1e5,此时的体积便能满足最终条件。
- 算法时间及空间复杂度分析(要有分析过程)
算法时间复杂度:输入是o(n),二分搜索是n(logn),fly函数是n,所以算法的时间复杂度是o(n)。
算法空间复杂度:因为代码里除了已有的空间存在,没有新增的所需空间,因此空间复杂度为o(1)。
5.心得体会(对本次实践收获及疑惑进行总结):在这道题目里,我没有想到使用二分算法进行求解,因此只能查看题解。得知在某个区间求特定值的问题可以用二分算法来做,也算是一大收获。