数据结构的选择与算法效率——从IOI98试题PICTURE谈起【关键字】数据结构的选择线性结构树形结构【摘要】算法+数据结构=程序
设计算法与选择合适的数据结构是程序设计中相辅相成的两方面,缺一不可
数据结构的选择一直是程序设计中的重点、难点,正确地应用数据结构,往往能带来意想不到的效果
反之,如果忽视了数据结构的重要性,对某些问题有时就得不到满意的解答
通过对IOI98试题Picture的深入讨论,我们可以看到两种不同的数据结构在解题中的应用,以及由此得到的不同的算法效率
本文以Picture问题为例,探讨数据结构的选择对算法效率的影响
【正文】引言算法通常是决定程序效率的关键,但一切算法最终都要在相应的数据结构上实现,许多算法的精髓就是在于选择了合适的数据结构作为基础
在程序设计中,不但要注重算法设计,也要正确地选择数据结构,这样往往能够事半功倍
在算法时间与空间效率的两方面,着重分析时间效率,即算法的时间复杂度,因为我们总是希望程序在较短的时间内给出我们所希望的输出
如果在空间上过于“吝啬”而使得时间上无法承受,对解题并无益处
本文对IOI98的试题Picture作一些分析,通过两种不同数据结构的选择,将了解到数据结构对算法本身及算法效率的影响
Picture问题及算法设计一、Picture问题Picture问题是IOI98的一道试题,描述如下:墙上贴着一些海报、照片等矩形,所有的边都为垂直或水平
每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长
例如图1的三个矩形轮廓周长为30:第22页共15页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第22页共15页图1要求编写程序计算轮廓周长
数据量限制:0≤矩形数目