aoj0118
一、题意:有三种水果分别用,'@','*','#'三种符号表示,上下左右相连的同种水果被看做是一个区域,问一共有多少个区域
二、思路:用dfs去标记相连区域,然后遍历每个没有被标记的位置进行dfs
三、代码:
#include"iostream"
#include"stdio.h"
#include"vector"
using namespace std; const int MAXN=105; char farm[MAXN][MAXN];
int m,n,cnt; bool IsEdge(int x,int y)
{
if(x>=0&&x<m&&y>=0&&y<n)
return true;
return false;
} bool IsSame(int x,int y,char tree)
{
if(farm[x][y]==tree)
return true;
return false;
} void Dfs(int x,int y,char tree)
{
int dir[]={0,1,0,-1,-1,0,1,0};
for(int i=0;i<8;i+=2)
{
int dx=x+dir[i];
int dy=y+dir[i+1];
if(IsEdge(dx,dy)&&IsSame(dx,dy,tree))
{
farm[dx][dy]='-';
Dfs(dx,dy,tree);
}
}
} int main()
{
while(cin>>m>>n,m&&n)
{
for(int i=0;i<m;i++)
{
cin>>farm[i];
}
cnt=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(farm[i][j]!='-')
{
cnt++;
char tree=farm[i][j];
farm[i][j]='-';
Dfs(i,j,tree);
}
}
}
cout<<cnt<<endl;
}
return 0;
}
aoj0118的更多相关文章
- 《挑战程序设计竞赛》2.1 深度优先搜索 POJ2386 POJ1979 AOJ0118 AOJ0033 POJ3009
POJ2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25366 Accepted: ...
- aoj-0118 property distribution(搜索)
Time limit1000 ms Memory limit131072 kB タナカ氏が HW アールの果樹園を残して亡くなりました.果樹園は東西南北方向に H × Wの区画に分けられ.区画ごとにリ ...
- 算法总结—深度优先搜索DFS
深度优先搜索(DFS) 往往利用递归函数实现(隐式地使用栈). 深度优先从最开始的状态出发,遍历所有可以到达的状态.由此可以对所有的状态进行操作,或列举出所有的状态. 1.poj2386 Lake C ...
随机推荐
- Django框架 之 查询 Extra
Django框架 之 查询 Extra extra 1 2 extra(select=None, where=None, params=None, tables=None, order_b ...
- DataTable 设置primarykey 后进行 Merge操作
1.先查看概念 可以看highplayer博客 http://blog.csdn.net/highplayer/article/details/6613817 2. protected void st ...
- 第十二课 Actionlib(1)
一\Actionlib概念 在ROS系统中,有时需发送请求给某个节点完成相应的任务,同时获得一个一个响应,这种情况下可以通过ROS服务来 完成;然而,在某些情况下,服务需要很长时间才能执行完,如让机器 ...
- SQLServer查询所有子节点
用CTE递归 ;with f as ( select * from tab where id=1 union all select a.* from tab as a inner join f as ...
- oracle数据库单表查询
今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮 ...
- oracle数据库数据类型和约束
今天为大家分享一下关键数据库里面的数据类型和约束.我们都知道国家要讲法律,干什么事情都要遵守法律,比如小的时候你上学的时候要遵守课堂纪律.不能迟到和早退,同样的我们在数据库中创建一些表.或者查询一些表 ...
- jquery.parser.js 的 parseOptions 方法
// target 是DOM元素 // properties 是宿主的属性 $.parser.parseOptions(target,properties); /** * parse options, ...
- 编写javascript的基本技巧一
自己从事前端编码也有两年有余啦,时间总是比想象中流逝的快.岁月啊,请给我把时间的 脚步停下吧.不过,这是不可能的,我在这里不是抒发时间流逝的感慨.而是想在这分享两 年来码农生活的一些javascrip ...
- UltraEdit 回车符替换空格
查找和替换 输入 ^r^n 替换为:(空格)
- Sql Server 日期格式化函數 Convert
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2015 10:57AM Select CONVERT(varchar(100), GETDATE( ...