UVa-572油田
2015-12-08 22:36
330 查看
分析:DFS基础题,典型题,新手必做之题。
不多做赘述,直接上代码
代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000;
int m,n,idx[maxn][maxn];
char pic[maxn][maxn];
void dfs(int r,int c,int id)
{
if (r<0||r>=m||c<0||c>=n) return;
if (idx[r][c]>0||pic[r][c]!='@') return;
int dr,dc;
idx[r][c]=id;
for (dr=-1;dr<=1;dr++)
for (dc=-1;dc<=1;dc++)
if (dc!=0||dr!=0) dfs(r+dr,c+dc,id);
}
int main()
{
int i,j;
while (scanf("%d%d",&m,&n)==2&&m&&n)
{
int count=0;
for (i=0;i<m;i++) scanf("%s",pic[i]);
memset(idx,0,sizeof(idx));
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (idx[i][j]==0&&pic[i][j]=='@') dfs(i,j,++count);
printf("%d\n",count);
}
return 0;
}
不多做赘述,直接上代码
代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000;
int m,n,idx[maxn][maxn];
char pic[maxn][maxn];
void dfs(int r,int c,int id)
{
if (r<0||r>=m||c<0||c>=n) return;
if (idx[r][c]>0||pic[r][c]!='@') return;
int dr,dc;
idx[r][c]=id;
for (dr=-1;dr<=1;dr++)
for (dc=-1;dc<=1;dc++)
if (dc!=0||dr!=0) dfs(r+dr,c+dc,id);
}
int main()
{
int i,j;
while (scanf("%d%d",&m,&n)==2&&m&&n)
{
int count=0;
for (i=0;i<m;i++) scanf("%s",pic[i]);
memset(idx,0,sizeof(idx));
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (idx[i][j]==0&&pic[i][j]=='@') dfs(i,j,++count);
printf("%d\n",count);
}
return 0;
}
相关文章推荐
- ORACLE权限
- Android--文件读写
- 森林病虫防治系统 (结束)
- VMWare 11 安装 出现乱码
- Linux 网络编程 select复用模式
- Exchange Server2013 系列:证书的配置
- CodeForces 507E Breaking Good 最短路
- 树莓派(raspberry)启用root账户
- 在Android中操作JSON数据-读取JSON格式数据/创建JSON格式数据
- 四则运算第二次冲刺更新进度(补更)
- Windows下常用软件工具的命令
- iOS UITextField实用限制字符长度(中英文)—— HERO博客
- BHO开发浏览器插件-Hello Word
- C# implementation of dynamic hand gesture recognition
- 查找最大元素
- Codeforces_96A
- ORACLE用户管理
- 建造者模式
- php生成PDF文件(FPDF)
- jquery.tmpl.min.js