小蝌蚪安家

发布时间: 2018年4月2日 20:48   时间限制: 1000ms   内存限制: 128M

描述

在一个矩形区域内,有些地方有水,有些地方没水。所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家。

输入

有多组输入数据,每组第一行包含两个正整数n,m(n,m<=100),接下来n行,每行m个字符,“.”表示有水,“#”表示没水。

输出

对于每组输入数据输出一行,包含一个整数,表示最大的水洼的面积。

样例输入1

3 3
###
###
##.
2 3
#..
..#

样例输出1

1
4

———————————————————————————————————————————————————非常标准的一道DFS题目 相当有温习的价值和必要

#include<iostream>
#include<string.h>
#include<cmath>
#include <cstdio>
using namespace std;char map[110][110];
int v[110][110];
int temp,n,m;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int main()
{void dfs(int i,int j);int i,j;while(scanf("%d%d",&n,&m)!=EOF){int Max=0;memset(v,0,sizeof(v));for(i=0;i<n;i++)for(j=0;j<m;j++)cin>>map[i][j];//输入地图for(i=0;i<n;i++){for(j=0;j<m;j++){if(map[i][j]=='.'&&v[i][j]==0)//对每一块区域都进行DFS搜索{temp=0;//area每次重新走的时候都要重置为0dfs(i,j);Max=max(Max,temp);}              //保留其中的最大值}}cout<<Max<<endl;} return 0;
}
void dfs(int i,int j)
{if(i<0||j<0||i>=n||j>=m||v[i][j])return;//超出范围则returnv[i][j]=1;//标记访问过后的路径temp++;//for(int k=0;k<4;k++){int x=i+dir[k][0];int y=j+dir[k][1];if(x<0||x>=n||y<0||y>=m)continue;if(v[x][y]==0&&map[x][y]=='.')     dfs(x,y);       }
}

DFS问题常封装好DFS函数来解决,关键在于判断DFS搜索的方向和范围。关于方向 通常设置一个dir函数会更加简单一点;直接调用其对应的方向就好。

下面是标程:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,posn;
int vis[110][110];//标记走过的点,0表示没走过,1表示走过
char maps[110][110];//存这个区域
int dir[4][2]={1,0,-1,0,0,1,0,-1};//四个方向
void dfs(int i,int j)
{if(i<0||i>=n||j<0||j>=m)//筛去不合法的路径return ;if(vis[i][j]||maps[i][j]=='#')//如果这个点走过,或者这个点是'#',也不用走了return ;posn++;vis[i][j]=1;//面积pos已经自加1了,所以该点也就可以标记走过了for(int k=0;k<4;k++)//往四个方向走dfs(i+dir[k][0],j+dir[k][1]);
}
int main()
{//freopen("data.in","r",stdin);while(scanf("%d%d",&n,&m)!=EOF){int i,j,maxn=0;memset(vis,0,sizeof(vis));for(i=0;i<n;i++)scanf("%s",maps[i]);for(i=0;i<n;i++)for(j=0;j<m;j++){if(maps[i][j]=='.'&&(!vis[i][j]))//如果是水洼'.'并且这个水洼点'.'没有被计算过,则从这个点开始dfs{posn=0;//posn存的是每块水洼的面积,每块计算的时候需要重置为0dfs(i,j);maxn=max(maxn,posn);}}printf("%d\n",maxn);}return 0;
}

#问题求解与编程# 实验三 G小蝌蚪安家相关推荐

  1. 北邮数电实验三接球小游戏

    文章目录 前言 一.实验要求 二.设计思路 三.设计系统框图 四.源代码 五.遇到的问题和解决办法 六.总结 前言 北邮数电实验三"接球小游戏" 数电实验验收已经结束了,实验报告也 ...

  2. bjfu1143 小蝌蚪安家 解题报告

    搜索没判断重复 导致各种bug 广搜栈空间超了 深搜有调试了半天 真的无语了 记录一下 校内放了链接校外也访问不了 直接放题目 用visit数组记录是否出现在队列里面 数据结构学好 并且做的题目少的可 ...

  3. dsa数字签名c语言编程,实验三DSA数字签名算法

    <实验三DSA数字签名算法>由会员分享,可在线阅读,更多相关<实验三DSA数字签名算法(8页珍藏版)>请在人人文库网上搜索. 1.实验三 DSA数字签名算法姓 名: 学 号: ...

  4. ACM 小蝌蚪安家 简单DFS

    描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. 输入 有多组输入数据,每组第一行包含两个正整数n,m(n,m ...

  5. bjfu 1143 小蝌蚪安家(bfs入门)

    本人的第一题bfs搜索: 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. Input 有多组输入数据,每组第一行包 ...

  6. 小蝌蚪安家 bjfu 1143 广度优先遍历

    描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. 输入 有多组输入数据,每组第一行包含两个正整数n,m(n,m ...

  7. #问题求解与编程# 实验二 D 比赛排名预测

    比赛排名预测 发布时间: 2018年3月27日 09:17   最后更新: 2018年3月29日 20:13   时间限制: 1000ms   内存限制: 128M 描述 听说ACM爱好者协会即将举办 ...

  8. #问题求解与方程# 实验三 F 数据结构之栈的应用

    数据结构之栈的应用 发布时间: 2018年4月2日 20:47   时间限制: 1000ms   内存限制: 128M 描述 对于每一位学计算机的孩纸来说,数据结构(Data Structure)无疑 ...

  9. 西北工业大学#面向对象编程实验#实验三

    西北工业大学·面向对象编程实验三 3.1 题目说明:给定Project类,在ProjectArray中实现缺失功能,并在测试类TestProjectArray中运行成功显示"All test ...

最新文章

  1. 面包好吃却五毒俱全,吃前请三思!
  2. Kubernetes系统架构简介--转
  3. Glide核心设计一:皮皮虾,我们走
  4. when is Lessifier triggered to be loaded
  5. 听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
  6. MySQL在Docker环境下运行基础
  7. 深入C++面试题总结
  8. 更新字典 (Updating a Dictionary,UVa12504)
  9. Ubuntu 18.04安装
  10. 关于【CSDN免积分下载器】的分析
  11. 上传航测影像就能土方计算?!0基础倾斜摄影土方计算流程
  12. php mtrand 范围,PHP mt_rand()函数
  13. excle报盘之导出处理失败数据
  14. 华为鸿蒙是开源式系统,全面开源!华为自研操作系统鸿蒙正式亮相
  15. 创建OE Order报Pre_Write_Process错误
  16. 求质数(素数)算法,及算法优化
  17. linux jenkins部署脚本,使用Jenkins 自动部署发布
  18. 广州的11个辖区_广东省广州市有哪些区?
  19. 【CSDN编程竞赛】赛后总结
  20. 我的世界手机版javaui材质包_我的世界:感受国外顶级3D材质包CreatorCraft

热门文章

  1. 【数据分析案例】某瓣读书数据分析
  2. Android开发之如何在App间安全地共享文件(FileProvider详解)?
  3. 好文转载——38K红外遥控编码扫盲
  4. 02-SpringBoot工程中JDBC应用实践
  5. 3.1 相关系数(person与spearman)
  6. JS中this的指向
  7. Java -jar xxx.jar --server.port=xxx 端口不生效问题
  8. 2020年计算机视觉市场现状与竞争格局分析,集成化、小型化的产品将会成为主要发展方向之一「图」
  9. PCIe热插拔机制(详细)总结-PCIe专题知识(五)
  10. 《RFID原理及应用》期末复习总结