黄色是空地!下图这就是为什么可以定义ans[NO-算法设计与分析.ppt

黄色是空地!下图这就是为什么可以定义ans[NO-算法设计与分析.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
画展活动hzhd 160327002、陈开河 报告时间(2016-09-28) 在画展场地n*m上我们用“*”表示展板“#”表示空地。(可以认为一个展板的格子有四幅画作分别朝向四个方向) 小铭同学可以在相邻的空地之间移动现在给定他的初始位置,他希望你能够告诉他,在他可以移动的范围内,最多能够欣赏到多少的画作。(3?≤?n,?m?≤?1000,?1?≤?k?≤?min(n*m,?100?0000)) 问题描述 input: 3 6 2(3行6列的矩阵,k=2组测试) ****** *##*#* (下标从1开始) ****** 2 2 (给出的坐标位置,输入) 2 5 output: 6 (代表坐标(2,2)周围有6幅画) 4 (代表坐标(2,5)周围有4幅画) 测试样例 这个题应该算是比较简单的DFS题,下面是几个注意点: 1. 题目能最多看到几幅画,类似这种题型都是用简单递归实现即可。 2.题目最外层已经加上套(就是地图的最外一层都是*)在此不用担心有哪些信誉好的足球投注网站越界! 3.这个注意点就是:一个*相当于四幅图,前后左右看到的*(画展)不是同一幅。 4.标记数组的使用(后面会讲到) 对问题的理解和分析 算法与数据结构的选取 变量说明: #define NO 1005 map[NO][NO] 表示地图 v[NO][NO] 标记点是否访问过,初始为0 ans[NO*NO/2] ans[i]代表第i块区域上的坐标访问的最大画数 当然喜欢抠空间的人,还可以抠到ans[999*999/2+1],为什么可以看下张图 num=0; 全局变量,最大可看画数 黑色和红色是画展,黄色是空地!下图这就是为什么可以定义ans[NO*NO/2]的原因了 void dfs(int x,int y,int times){//times为第几块区域 if(map[x][y]==‘*’) num++;//全局变量,可看到的画数加一 else if(!v[x][y]) { //未访问过的点 v[x][y]=times;//把(x,y)属于第times块区域 dfs(x+1, y,times);dfs(x-1, y,times); dfs(x,y-1, times);dfs(x, y+1, times);} /*派出4个士兵进行有哪些信誉好的足球投注网站上下左右这4个方向分别看到几幅画*/ } 核心代码 for(i=1;i=k; ++i) { num=0; //初始化能看到的照片数 scanf(%d%d,x,y); //我们下标从0开始 if(v[x-1][y-1] == 0) { dfs(x-1,y-1,i); ans[i]=num; //第i块区域的值 }else {num = ans[ v[x-1][y-1] ]; } //num代表当前点对应的最大画数 printf(%d\n,num); } 这个算法如果不加入第三个变量times,效率会差很多很多。 加入第三个变量代表第几块区域,可以很好的处理出现一堆“.”即一堆空地在一起的情形。 dfs函数不加times,要每个“.”访问一次。 dfs函数加了times,可以在一堆“.”的情形下,我保证只有哪些信誉好的足球投注网站这一堆“.”的中任意一个“.”,访问其他“.”时直接输出已保存的结果。标记数组只需要初始赋值即可 算法分析 假设有哪些信誉好的足球投注网站绿色这一起始点,调用dfs(1,1,1)然后算出可以看36张照片,然后我们记录保存ans[1]=36; 经过有哪些信誉好的足球投注网站,所有黄色的格子都会被标记已经访问过,为第一块区域。然后当有哪些信誉好的足球投注网站这些黄色格子的时候,我们就直接输出ans[1]就可以了~这样避免了黄色这些点的再次重复有哪些信誉好的足球投注网站。 红色代表画展,其他颜色都是空地。 每一块区域(即每一种颜色),每种颜色只需要有哪些信誉好的足球投注网站一次即可。

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档