该文档是浙江大学2007年计算机专业的一份上机试题,主要涉及编程问题,具体是寻找包围一组二维平面上整数坐标的最小长方形。这个问题可以被归类为计算机科学中的几何算法和数据结构问题。
题目描述的是,给定一系列2维坐标点(x, y),目标是找到一个最小的长方形,它的边与x轴和y轴平行,并能完全包含所有的点。点可以位于长方形的边界上。输入是以若干对整数坐标的形式给出,直到遇到一对零坐标表示测试用例结束,而连续的零坐标表示输入结束。
对于这个题目,给出的三个不同解决方案都采用了类似的方法,即遍历所有输入的点,维护四个边界值(x1, y1, x2, y2),分别代表长方形的左下角和右上角坐标。在遍历过程中,不断更新这些边界值,确保它们始终是最小长方形的正确边界。输出这对边界坐标即可。
第一个解决方案使用C++编写,通过`while`循环读取输入,每次读取一对坐标并更新边界值。当遇到一对零坐标时,输出当前的边界值并换行。
第二个解决方案也使用C++,但更注重函数的封装,定义了两个辅助函数`Max`和`Min`,用于找出数组中的最大值和最小值。在主函数中,读取坐标到数组中,然后调用这两个函数获取边界值并输出。
第三个解决方案使用C语言,同样使用`while`循环处理输入,初始化边界值为非常大和非常小的数,然后逐个读取坐标更新边界。由于C语言没有内置的最大值和最小值函数,所以这部分逻辑直接写在循环内部。
这三个解决方案都有效地解决了问题,通过了自动测试系统(AC)。在实际编程竞赛或作业中,这种简洁且高效的算法是解决问题的关键。在解决这类问题时,理解题意、合理利用数据结构和算法,以及编写清晰的代码都是必不可少的技能。