【2014.8.17NOIP普及组模拟】数池塘
2016-07-11 16:25
519 查看
题目描述
农夫约翰的农场可以表示成N*M(1<=N<=100,1<=M<=100)个方格组成的矩形。由于近日的降雨,在约翰农场上的不同地方形成了池塘。每一个方格或者有积水('W')或者没有积水('.')。农夫约翰打算数出他的农场上共形成了多少池塘。一个池塘是一系列相连的有积水的方格,每一个方格周围的八个方格都被认为是与这个方格相连的。现给出约翰农场的图样,要求输出农场上的池塘数。题解把走过的标记和没水的一样,向八个方向找。代码:var a:array[0..120,0..120] of boolean; b:array[1..8,1..2] of longint=((0,1),(0,-1),(1,0),(-1,0),(1,1),(1,-1),(-1,1),(-1,-1)); n,m,ans:longint; s:string; procedure seach(x,y:longint); var i:longint; begin if (x<1)or(y<1)or(x>n)or(y>m) then exit; a[x,y]:=false; for i:=1 to 8 do if a[x+b[i,1],y+b[i,2]] then seach(x+b[i,1],y+b[i,2]); end; var i,j:longint; begin assign(input,'lkcount.in');reset(input); assign(output,'lkcount.out');rewrite(output); fillchar(a,sizeof(a),false); readln(n,m); for i:=1 to n do begin readln(s); for j:=1 to m do if s[j]='W' then a[i,j]:=true else a[i,j]:=false; end; for i:=1 to n do for j:=1 to m do if a[i,j] then begin seach(i,j);inc(ans);end; writeln(ans); close(input);close(output); end.
相关文章推荐
- MAC 抓包神器charles的安装、使用及问题解答
- [leetcode] 230. Kth Smallest Element in a BST
- 关于系统签名的问题
- Glide 对比 Picasso
- 一个对象合并的函数引发的错误
- My_Python的常用函数.
- Mysql常用命令(详细)
- RxJava学习
- Git command
- iOS获取UUID,并使用keychain存储
- Linux异步信号IO模型
- iOS安全–实时查看模拟器的日志输出
- 高项通过的一点感想和经验
- Java序列化
- docker 使用
- Scrum之初体验
- springMVC是实现前台带进度条文件上传
- MAVEN项目目录结构
- Nginx中如何限制某个IP同一时间段的访问次数
- 【2014.8.17NOIP普及组模拟】愤怒的牛