- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
【题1】求图形面积
具有不同颜色的n个矩形被叠放在一张白纸上,纸的尺寸为a*b。摆放矩形时,必须使矩形的边与纸的边平行,并且每个矩形整个放在纸的边界之内。因此不同颜色的各种不同图形可在纸上出现。同一颜色的两个区域中如果至少有一个公共点,则可以认为它们是同一图形的一部份;否则认为是不同图形。题目要求计算每一图形的面积。
输入:
a,b,n (a,b为正偶数且a,b≤30,1?n?
矩形1左下角坐标 矩形1右上角坐标 颜色码1
?????????????????
矩形n左下角坐标 矩形n右上角坐标 颜色码n
a*b)
2
注:坐标系的定义为纸的中心,两轴分别平行于纸的两边。颜色码为1~64间的一个正整数。输出:
按颜色码升序要求输出每个彩色图形的面积。一行为一个彩色图形。格式:颜色码 图形面积
分析:
1、图形定义
纸中央作坐标原点,过原点作平行于纸两边的y轴和x轴。Y轴的坐标区间为??
b??b?,x轴的坐标
?区间为??
?
?
a??a?(如下图)
2 2??
?? 2 2??
纸上的每一坐标位置看作是一个可涂64种颜色的色点,其面积为单位1。这样a*b的纸即成了一个具有a*b个色点的点阵,纸的面积与色点数相等。设
squa—染色矩阵,其中squa[i,j]为(i,j)的色码(-?b?≤i≤?b?,-?a?≤j≤?a?,1≤squa[i,j]
≤?a*b?)
??2??
??2??
??2??
??2??
?? 2 ??
colorhave—颜色标志表,其中colorhave[j]为颜色j存在的标志(1≤j≤?a*b?);
?? 2 ??
我们输入数据的同时构造squa矩阵和colorhave表:
fillchar(squa,sizeof(squa),1);
fori←1tondo {依次读入每个矩形的信息}
begin
forj←1to5do读n; {读入矩形i的信息}
j
colorhave[n]←true; {置颜色n存在}
5 5
forj←nton-1do {矩形i涂上颜色n}
1 3 5
fork←nton-1dosqua[j,k]←n;
2 4 5
end;{for}
squa矩阵中的每一坐标点(x,y)有8个可能的相邻点,位于不同方向。(如上图(b))中圆圈内的数字表
征这8个方向。括号(△y,△x)为方向i的相邻点(y’,x’)与(y,x)的垂直增量和水平增量(1≤i≤8)
i i
2、图形面积的计算方法
按颜色码递增顺序搜索每一种颜色。每搜索一种颜色i(1≤i≤64)时,若colorhave表中存在该颜色,则按顺序搜索squa矩阵中的每一个元素;若发现一个具的颜色i的色点(y,x)时,则该坐标送入队列,并将该位置的色码置0,避免重复搜索。然后队首状态出队扩展,将所有色码为i的相邻坐标送入队列。这样按“先进先出”的顺序扩展下去,直至open=closed为止。此时得出(y.x)所在的一个彩色图形,其面积为(y,x)周围同颜色的色点数,即扩展的状态数open。显然,通过一次广度优先搜索,可得出一个彩色图形:
①状态和队列的定义
我们将当前块位置(y,x)作为状态,其相邻方向作为算符。状态和队列的定义如下:
Type
node=record
x,y:shortint; {坐标}
end;
var list:array[1‥listmax]ofnode; {队列}
open,closed:integer; {队尾指针和队首指针}list队列设两个指针:
open——队尾指针。每入队一个状态,open+1;closed——队首指针。每出队一个状态,closed+1。然后扩展出队状态list[closed],其生成的子状
态从队尾一端进入list表;
②搜索范围
将方向数k作为算符,搜索8个相邻块的颜色。显然方向数k的范围为1≤k≤8;
③约束条件
若(y,x)k方向的相邻块同色,则相邻块作为扩展出的子状态入队;
若squa矩阵中有p个涂有颜色i的图形,通过p次广度优先搜索便可计算出这些图形的面积。按照颜色码升序要求类推所有种颜色,可以得出每个彩色图形的面积。
3、程序流程
①扩展队首状态list[closed]
设当前扩展list[closed],该状态对应坐标的颜色为c
您可能关注的文档
最近下载
- 初中七年级上册数学每日一练小纸条.pdf VIP
- 高考生物遗传简单题100道【附参考答案及详细解析过程】.pdf VIP
- 《高铁乘务》专业人才培养方案.docx VIP
- HES A1302-14 焊接螺栓材料选用标准--chs.pdf VIP
- 生日主题-精美红色员工生日派对PPT模板.pptx VIP
- 《黄河水滴灌泥沙逐级处理技术规程》DB15T 4180-2025(内蒙标准).pdf
- 《建设工程工程量清单计价规范》2024版与2013版逐条对比.pdf VIP
- 2024新人教版英语七年级上单词表(小学部分)(英译汉).docx VIP
- 空气源热泵冷暖空调、热水项目施工方案.docx VIP
- 大学生网购电子产品影响因素研究.docx VIP
文档评论(0)