第2章程序员下午试题分析与解答试题一阅读以下说明和算法,完善算法并回答问题,将解答写在答题纸的对应栏内。说明】【说明】假设以二维数组G1m,1
表示一幅图像各像素的颜色,则Gi,j表示区域中点i,j处的颜色,颜色值为0~k的整数。下面的算法将指定点i0,j0所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点i0,j0同色的上、下、左、右可连通的点组成同色邻接区域。例如,一幅8×9像素的图像如图21所示。设用户指定点3,5,其颜色值为0,此时其上方2,5、下方4,5、右方3,6邻接点的颜色值都为0,因此这些点属于点3,5所在的同色邻接区域,再从上、下、左、右四个方向进行扩展,可得出该同色邻接区域的其他点见图21中的阴影部分。将上述同色区域的颜色替换为颜色值7所得的新图像如图22所示。
【算法】算法】输入:矩阵G,点的坐标i0,j0,新颜色值
ewcolor。输出:点i0,j0所在同色邻接区域的颜色置换为
ewcolor之后的矩阵G。算法步骤为规范算法,规定该算法只在第七步后结束如下。第一步:若点i0,j0的颜色值与新颜色值
ewcolor相同,则1;第二步:点i0,j0的颜色值→oldcolo
创建栈S,并将点坐标i0,j0入栈;第三步;若2,则转第七步;第四步;栈顶元素出栈→xy,并3;第五步;1若点x,y1在图像中且Gx,y1等于oldcolor,则xy1入栈S;2若点x,y1在图像中且GIx,y1等于oldeolor,则x,y1入栈S;3若点x1,y在图像中且Gx1,y等于oldcolor,则x1,y入栈S;4若点x1,y在图像中且Gx1,y等于oldcolor,则x1,y入栈S;第六步:转4;第七步:算法结束。问题】【问题】是否可以将算法中的栈换成队列回答;5。试题一分析本题考查栈结构在算法中的应用。栈或和队列常在某些应用中用来临时存储需要处理的元素,因此,其基本应用方式为:首先令一个或多个元素入栈队列,然后在栈队列非空的情况下,栈顶队头元素出栈队列并进行处理,然后令与该栈顶队头元素相关的其他元素入栈队列,再从判栈队列空开始重复以上过程。根据题目说明部分的描述,所有与点i0,j0同色的上、下、左、右可连通的点组成同色邻接区域。要置换一个同色邻接区域中所有点的颜色,可先将所有需要改变颜色的点的坐标记录下来,然后逐个地改变其颜色值;也可采取找出一个点、处理一个点的方式进行颜色置换。题中给出的算法属于后一种情况。显然,算法中需要一个存储空间,用于临时存储需要置换颜色的点的坐r