题目描述

在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机。此外,巡洋船只和舰队将被派去保护海岸线。不幸的是因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战。因此,他们考虑培养一些新的海军指挥官,他们选择了“海战”游戏来帮助学习。

在这个著名的游戏中,在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船。在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形。编写程序求出该棋盘上放置的船只的总数。

输入格式

输入文件头一行由用空格隔开的两个整数R和C组成,1<=R,C<=1000,这两个数分别表示游戏棋盘的行数和列数。接下来的R行每行包含C个字符,每个字符可以为“#”,也可为“.”,“#”表示船只的一部分,“.”表示水。

输出格式

为每一个段落输出一行解。如果船的位置放得正确(即棋盘上只存在相互之间不能接触的方形,如果两个“#”号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。就输出一段话“There are S ships.”,S表示船只的数量。否则输出“Bad placement.”。

输入输出样例

输入 #1

6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#

输出 #1

There are 5 ships.

代码如下:

 如果图是不和法的,一定存在如下结构:
# #
. #
或
# #
# .
或
# .
# #
或
. #
# #
//dfs
#include<bits/stdc++.h>
using namespace std;
int r , c , coun , ships;
char ch[1005][1005] ;
int dx[4]={0,0,1,1};
int dy[4]={0,1,1,0};
/**/
bool check(int x , int y)
{coun=0;for(int i=0;i<4;i++){if(ch[x+dx[i]][y+dy[i]]=='#'){coun++;}}if(coun==3) return false;return true;
}void dfs(int x,int y)
{ch[x][y]='`';for(int i =0 ;i<4;i++){if(ch[x+dx[i]][y+dy[i]]=='#')dfs(x+dx[i],y+dy[i]);}
}int main ()
{cin>>r>>c;for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){cin>>ch[i][j];}}for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){if(!check(i,j)){cout<<"Bad placement.";return 0;}}}for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){if(ch[i][j]=='#'){dfs(i,j);ships++;}}}cout<<"There are "<<ships<<" ships.";return 0;
}

P1331 海战 (搜索 广度优先搜索,BFS深度优先搜索,DFS)相关推荐

  1. 深度优先搜索_0基础学算法 搜索篇第一讲 深度优先搜索

    0基础学算法 搜索篇第一讲 深度优先搜索 相信绝大多数人对于深度优先搜索和广度优先搜索是不会特别陌生的,如果我这样说似乎你没听说过,那如果我说dfs和bfs呢?先不说是否学习过它们,至少它们的大名应该 ...

  2. LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷, 'E' 代表一个未挖出的空方 ...

  3. 图:BFS(深度优先搜索)图解分析代码实现

    文章目录 一.介绍 二.图的建立 2.1建立图类 2.2建立图 三.BFS 3.1图解: 3.2代码 四.DFS和BFS完整代码 一.介绍 图的DFS(深度优先搜索)与BFS(广度优先搜索)是图的两种 ...

  4. 搜索---广度优先遍历、深度优先遍历、回溯法

    参考文章:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%9 ...

  5. 数据结构与算法—图论之dfs、bfs(深度优先搜索、宽度优先搜索)

    文章目录 前言 邻接矩阵和邻接表 深度优先搜索(dfs) 宽度(广度)优先搜索(bfs) 总结与比较 前言 在有向图和无向图中,如果节点之间无权值或者权值相等,那么dfs和bfs时常出现在日常算法中. ...

  6. dfs深度优先搜索_图的深度优先搜索(DFS)

    dfs深度优先搜索 Depth First Search (DFS) is an algorithm that searches a graph/tree, in a depth-wise manne ...

  7. 八数码深度优先搜索_树的深度优先搜索(上)

    还记得我们说迭代法的具体应用中的二分法吗?我们讨论了一个查字典的例子.如果要使用二分查找,我们首先要把整个字典排个序,然后每次都通过二分的方法来缩小搜索范围.不过在平时的生活中,咱们查字典并不是这么做 ...

  8. 深度搜索 java_Java中的深度优先搜索

    1. 概述 在本教程中,我们将探讨Java中的深度优先搜索 深度优先搜索(DFS)是一个应用于树.图等数据结构的遍历算法.在移动到下一个分支之前,深度优先搜索会 深度为优先原则去探索新的分支. 在接下 ...

  9. P1506 拯救oibh总部 (模拟搜索广度优先搜索,BFS深度优先搜索,DFS)

    题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进 ...

最新文章

  1. eclipse中启动tomcat,不能访问localhost解决办法
  2. excel表格怎么调整行高和列宽_表格太宽,怎么打印在一页上?这招超简单
  3. java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...
  4. MySQL 全文搜索支持
  5. [Mac OSX技巧] 通过命令行开启安全性与隐私中的任何来源
  6. [2019杭电多校第四场][hdu6616]Divide the Stones
  7. JAVA集合系列(4):关于数组复制的几种方法(源码解读)及执行效率,我们知多少?
  8. 1.4多媒体计算机系统教案,1.4 多媒体计算机系统教案3
  9. distpicker实现省市级联动
  10. java maven是做什么的_maven是干什么用的
  11. 解决ubuntu无法连接网络问题
  12. 如何利用python计算即期利率_利用 Python 进行量化投资分析 - 利率及风险资产的超额收益-Go语言中文社区...
  13. 如何搭建云服务器以及使用
  14. win10打开软件显示c盘服务器,【解决】win10 打开本地磁盘 提示找不到应用程序...
  15. 双系统(win10Ubuntu16.04)开机引导设置
  16. Spring Boot中多个PostConstruct注解执行顺序控制
  17. Groovy语言 Grails框架入门
  18. 假新闻遇上AI,祸兮福兮?
  19. 抗体偶联药物 (ADC)——抗肿瘤细胞
  20. 爱立信联手日本软银在东京进行5G测试

热门文章

  1. window server2008部署winform 报错CLR20r3
  2. linux查找文件并删除
  3. VIVADO IDDR与ODDR原语的使用
  4. 今天,你的微信铃声是什么?
  5. FMD辉芒微原厂FT60F011A-RB SOP-8 单片机MCU
  6. 语不惊人死不休-一针见血的名言
  7. 经常听说高通CPU是最好的, 手机CPU你了解多少?
  8. postgreSQL解析json字符串字段
  9. 督促自己——某客编程题3道(Java)——字符串查找、数组、集合
  10. c语言数据结构大作业,数据结构大作业——树(和广义表)