vj Fox and Cross

2024-04-29 13:38
文章标签 cross fox vj

本文主要是介绍vj Fox and Cross,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

Fox Ciel has a board with n rows and n columns. So, the board consists of n × n cells. Each cell contains either a symbol '.', or a symbol '#'.

A cross on the board is a connected set of exactly five cells of the board that looks like a cross. The picture below shows how it looks.

Ciel wants to draw several (may be zero) crosses on the board. Each cross must cover exactly five cells with symbols '#', and any cell with symbol '#' must belong to some cross. No two crosses can share a cell.

Please, tell Ciel if she can draw the crosses in the described way.

Input

The first line contains an integer n (3 ≤ n ≤ 100) — the size of the board.

Each of the next n lines describes one row of the board. The i-th line describes the i-th row of the board and consists of n characters. Each character is either a symbol '.', or a symbol '#'.

Output

Output a single line with "YES" if Ciel can draw the crosses in the described way. Otherwise output a single line with "NO".

Sample Input

Input
5
.#...
####.
.####
...#.
.....
Output
YES
Input
4
####
####
####
####
Output
NO
Input
6
.#....
####..
.####.
.#.##.
######
.#..#.
Output
YES
Input
6
.#..#.
######
.####.
.####.
######
.#..#.
Output
NO
Input
3
...
...
...
Output
YES

Hint

In example 1, you can draw two crosses. The picture below shows what they look like.

In example 2, the board contains 16 cells with '#', but each cross contains 5. Since 16 is not a multiple of 5, so it's impossible to cover all.


题目大意:给出一个地图,包含#和 . 。在地图上画+号,且+只能覆盖有#的单元,问能否用加好+覆盖掉所有的#


基本思路:暴力寻找每一个点,从该点出 如果该点的周围的点满足条件就画"+"号,(条件:该单元是#号且没有用过)

暴力一边后判断所有的#是否都用了


#include <iostream>
#include<cstring>
#include<cstdio>using namespace std;char mp[105][105];
int vis[105][105];int main()
{int n;while(~scanf("%d",&n)){int ans=0;for(int i=0;i<n;i++){scanf("%s",mp[i]);for(int j=0;j<n;j++){if(mp[i][j]=='#')ans++;}}memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(mp[i][j]=='#'&& !vis[i][j]&&i-1>=0&&i+1<n&&j-1>=0&&j+1<n){if(mp[i-1][j]=='#'&&mp[i+1][j]=='#'&&mp[i][j-1]=='#'&&mp[i][j+1]=='#'&&!vis[i-1][j]&&!vis[i-1][j]&&!vis[i][j-1]&&!vis[i][j+1]){vis[i][j]=1;vis[i-1][j]=1;vis[i+1][j]=1;vis[i][j-1]=1;vis[i][j+1]=1;}}}}int sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(vis[i][j])sum++;}}if(ans==sum)printf("YES\n");else printf("NO\n");}return 0;
}


这篇关于vj Fox and Cross的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946240

相关文章

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

经验笔记:跨站脚本攻击(Cross-Site Scripting,简称XSS)

跨站脚本攻击(Cross-Site Scripting,简称XSS)经验笔记 跨站脚本攻击(XSS:Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,它允许攻击者将恶意脚本注入到看起来来自可信网站的网页上。当其他用户浏览该页面时,嵌入的脚本就会被执行,从而可能对用户的数据安全构成威胁。XSS攻击通常发生在Web应用程序未能充分过滤用户提交的数据时,导致恶意脚本得以传递

[论文解读]Genre Separation Network with Adversarial Training for Cross-genre Relation Extraction

论文地址:https://www.aclweb.org/anthology/D18-1125.pdf发表会议:EMNLP2019 本论文的主要任务是跨领域的关系抽取,具体来说,利用某个领域的数据训练好的关系抽取模型,很难去直接抽取另一个领域中的关系,比如我们拿某个领域训练好的模型,把另一个领域的数据直接输入整个模型,很难抽取出来正确的实体关系。这主要是因为源领域和目标领域特征表达的不同,在源

cross join lateral 表连接

1. 概述 在 PostgreSQL 中,表连接是查询构建的核心。通过连接,可以将多张表的数据组合在一起,以生成所需的结果。 2. 什么是 CROSS JOIN LATERAL? CROSS JOIN LATERAL 是 PostgreSQL 中一个非常强大的功能,它允许对左表的每一行执行右侧的子查询或表达式。不同于普通的 JOIN 操作,CROSS JOIN LATERAL 允许右侧的子查

解决Node.js调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)

在写一个文件上传的功能时候,调用fs.renameSync方法错误 出错 代码所在如下: 1 function upload(response,request){ 2 console.log("upload called"); 3 var form = new formidable.IncomingForm(); 4 console.log("about t

【论文】A Collaborative Transfer Learning Framework for Cross-domain Recommendation

Intro 业界常见的跨域建模方案主要分为两种范式[22][32][5][36][17][14][20]:1) 将源样本和目标样本进行联合和混合,然后执行多任务学习技术,以提高在所有域中的性能;2) 使用混合或数据丰富的源域数据预先训练模型,然后在数据不足的目标域中对其进行微调,以适应新的数据分布。在第一种方法中,通过不同类型的网络设计来学习特定域特征和域不变特征,其中域指标通常用于识别域。在微

[深度学习]交叉熵(Cross Entropy)算法实现及应用

写在前面:要学习深度学习,就不可避免要学习Tensorflow框架。初了解Tensorflow的基础知识,看到众多API,觉得无从下手。但是到了阅读完整项目代码的阶段,通过一个完整的项目逻辑,就会让我们看到的不只是API,而是API背后,与理论研究相对应的道理。除了Tensorflow中文社区的教程,最近一周主要在阅读DCGAN的代码(Github:https://github.com/carpe

join连接的五种方式的简单使用案例(Inner join,Left join,Right join,Full join,Cross join)

1.内连接Inner join 内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表  ,在表中存在至少一个匹配时,INNER JOIN 关键字返回行。    下面是一个简单的使用案例  以下是运行代码及结果  2.左外连接Left join 左外连接Left join关键字会从左表那里返回所有的行,即使是在右表中没有匹配到的行    下面是一个简单的案例

判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)

试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。 注意:算法中涉及的图的基本操作必须在此存储结构上实现。 图的邻接表以及相关类型和辅助变量定义如下: Status visited[MAX_VERTEX_NUM];typedef char VertexType;typedef struct ArcNode {int adj

Cross-Modal Alignment

Cross-Modal Alignment 论文阅读 原文:Zhu Y , Xu Y , Ni B , et al. Enhancing pulmonary nodule detection via cross-modal alignment[C]// Visual Communications & Image Processing. IEEE, 2018. 简介 问题 在肺结节检