从立体几何问题看降低编程复杂度.pptVIP

  • 4
  • 0
  • 约 24页
  • 2017-09-09 发布于湖北
  • 举报
从立体几何问题看降低编程复杂度

从立体几何问题看降低编程复杂度 人大附中 高亦陶 引言:一类立体几何问题 O(1)的空间复杂度 O(1)的时间复杂度 并非公认的简单题 1 运用合适的思维方式 使用方程是一种进步 方程是一种抽象的、通用的解题方法 但是方程有时会忽略一部分已知信息 通过具体地思考、充分利用已知信息可以从本质入手,降低编程复杂度 例1 Model Rocket Height 给出两条直线的起点和方向,求它们公垂线中点的高度。 直线方向用仰角和方向角表示。 数据的初步处理和思路 尝试解题 进一步思考 另外两个未知量 最后一步 小结 2 注意分类讨论 大量的分类+复杂的判断=难以承受的编程复杂度 合理地把不同的情况合并起来可以大大改善这种状况 例2 Crossing Prisms 平面内有一个简单多边形。 多边形边数≤4,每个顶点都是整点,坐标取值范围为[0,10]。顶点按照逆时针方向排序。 关注表面 多数情况 重要情况 形状特殊的面 继续利用这个宽 算法框架 对高度排序 计算每点高度处的宽 枚举每一条边 判断平行与否 宽2-(宽-边长)2 或者 2*射影面积/cos二面角 计算宽 处理特殊情况 面积≠(宽1+宽2)*高/2 ? 一种具体的处理办法 小结:合并的效果 总结和启示 算法是多样化的,选择时要注重适用性 在遇到新问题时,首先想一想能不能在现有框架内解决,而不是随意添加新的内容 对算法同样可以从类

文档评论(0)

1亿VIP精品文档

相关文档