当前位置: 首页 > news >正文

洛谷 P1454 圣诞夜的极光

P1454 圣诞夜的极光

题目背景

圣诞夜系列~~

题目描述

圣诞老人回到了北极圣诞区,已经快到12点了。也就是说极光表演要开始了。这里的极光不是极地特有的自然极光景象。而是圣诞老人主持的人造极光。

轰隆隆……烟花响起(来自中国的浏阳花炮之乡)。接下来就是极光表演了。

人造极光其实就是空中的一幅幅n*m的点阵图像。只是因为特别明亮而吸引了很多很多小精灵的目光,也成为了圣诞夜最美丽的一刻。

  然而在每幅n*m的点阵图像中,每一个点只有发光和不发光两种状态。对于所有的发光的点,在空中就形成了美丽的图画。而这个图画是以若干个(s个)图案组成的。对于图案,圣诞老人有着严格的定义:对于两个发光的点,如果他们的曼哈顿距离(对于A(x1,y1)和B(x2,y2),A和B之间的曼哈顿距离为|x1-x2|+|y1-y2|)小于等于2。那么这两个点就属于一个图案…… 小精灵们一边欣赏着极光,一边数着每一幅极光图像中的图案数。伴着歌声和舞蹈,度过了美丽的圣诞之夜。^_^

输入输出格式

输入格式:

 

第一行,两个数n和m。

接下来一共n行,每行m个字符。对于第i行第j个字符,如果其为“-”,那么表示该点不发光,如果其为“#”,那么表示该点发光。不可能出现其他的字符。

 

输出格式:

 

第一行,一个数s。

 

输入输出样例

输入样例#1: 复制
19 48
------------------------------------------------
---####-----#-----#----------------------####---
--######----#-----#---------------------######--
-########--#-#---#-#####--#-##-##---#--########-
-###--###--#-#---#-#----#-##-##--#--#--###--###-
-###--###--#--#-#--######-#--#---#-#---###--###-
-########--#--#-#--#------#--#----##---########-
--######---#---#---######-#--#-----#----######--
---####----------------------------#-----####---
----------------------------------#-------------
------------------------------------------------
---###--#--------#------#-----------------------
--#---#-#---------------#-----------------------
-#------#-##--#-##--##-###-#-##-###--###-#--##--
-#------##--#-##-#-#----#--##--#---##---##-#----
-#------#---#-#--#--#---#--#---#---##----#--#---
--#---#-#---#-#--#---#--#--#---#---##---##---#--
---###--#---#-#--#-##---#--#---#---#-###-#-##---
------------------------------------------------
输出样例#1: 复制
4

说明

1<=n,m<=100

DFS~~

思路:宽搜。

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct nond{
    int x,y;
};
int n,m,ans;
char s[1010];
bool map[110][110];
int dx[12]={0,0,1,-1,1,1,-1,-1,2,-2,0,0};
int dy[12]={1,-1,0,0,1,-1,1,-1,0,0,2,-2};
void bfs(int x,int y){
    queue<nond>que;
    nond tmp;
    tmp.x=x;tmp.y=y;
    que.push(tmp);
    while(!que.empty()){
        nond now=que.front();
        que.pop();
        for(int i=0;i<12;i++){
            int cx=now.x+dx[i];
             int cy=now.y+dy[i];
             if(cx>=1&&cx<=n&&cy>=1&&cy<=m&&map[cx][cy]){
                nond c;map[cx][cy]=0;
                c.x=cx;c.y=cy;
                que.push(c);
              }
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%s",s);
        for(int j=0;j<m;j++)
            if(s[j]=='#')    map[i][j+1]=1;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(map[i][j]){
                map[i][j]=0;
                ans++;
                bfs(i,j);
             }
    cout<<ans;
}

 

转载于:https://www.cnblogs.com/cangT-Tlan/p/8035156.html

相关文章:

  • 关于手势处理
  • ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
  • Centos运行Mysql因为内存不足进程被杀
  • BZOJ3529 [Sdoi2014]数表 【莫比乌斯反演】
  • JS 详解 Cookie、 LocalStorage 与 SessionStorage
  • 进程和线程(5)-分布式进程
  • LeetCode-13-roman-to-integer
  • 荣品i.mx6q飞思卡尔工业级核心板开发板高稳定性
  • SoapUI使用中遇到的问题及解决办法
  • 【软工项目组】第十三次会议(样式设计2.0)
  • QGhappy小组第三次作业第十次会议完成情况
  • corethink功能模块探索开发(二)让这个模块可安装
  • [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)...
  • 1的个数
  • 机器学习之线性回归
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • CentOS 7 修改主机名
  • co.js - 让异步代码同步化
  • CSS 提示工具(Tooltip)
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • HashMap ConcurrentHashMap
  • HTML-表单
  • interface和setter,getter
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript类型识别
  • js数组之filter
  • nfs客户端进程变D,延伸linux的lock
  • PHP 的 SAPI 是个什么东西
  • Redux 中间件分析
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 深度学习在携程攻略社区的应用
  • 以太坊客户端Geth命令参数详解
  • 优化 Vue 项目编译文件大小
  • 责任链模式的两种实现
  • 自动记录MySQL慢查询快照脚本
  • ​一些不规范的GTID使用场景
  • #宝哥教你#查看jquery绑定的事件函数
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2020)Java后端开发----(面试题和笔试题)
  • (4)(4.6) Triducer
  • (离散数学)逻辑连接词
  • (实战篇)如何缓存数据
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)c++ std::pair 与 std::make
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net 使用ajax控件后如何调用前端脚本
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net反编译的九款神器
  • .NET和.COM和.CN域名区别
  • .NET基础篇——反射的奥妙