题目链接:http://codeforces.com/problemset/problem/389/B

题目意思:给出一个由n行n列组成的board,其中'#'表示的一片地方恰好能画满十字架,画满的意思表示:这些十字架不能够共用'#' !当然如果全部都是'.',表示不画十字架。问如果有'#'和'.'的board上,是否恰好能填满所有'#'。能就输出 'YES',否则输入'NO'

比赛的时候完全没有思路,这是赛后做出来的,参考了别人的思路。

可以这样想,考虑到十字架这么特殊的图案,以每个十字架的最高点为判断的起始点,也就是说,当能画一个十字架时,绝对是首先遇上它的最高点的!然后判断该点的正下方连续两点,还有下方第一个点紧挨着左右两边是否也为'#'即可。另外一个要考虑的地方是肯定不能画十字架的情况,每一列的第一个和最后一个字符如果为'#'是不能画十字架的,还有,倒数后两行出现'#'也是不行的。

这次比赛的题目总的来说,很有意思,虽然食蛋了!大悲剧~~~

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = + ;
char cell[maxn][maxn]; int main()
{
int i, j, n, flag;
while (scanf("%d", &n) != EOF)
{
for (i = ; i < n; i++)
scanf("%s", cell[i]);
flag = ;
for (i = ; i < n && !flag; i++)
{
for (j = ; j < n && !flag; j++)
{
if (cell[i][j] == '#')
{
if (j == || j == n- || i >= n- || cell[i+][j] != '#' || cell[i+][j-] != '#' || cell[i+][j+] != '#' || cell[i+][j] != '#') // 第1列,最后1列,倒数后两行,还有十字架所占的所有地方都要检测
{
printf("NO\n");
flag = ;
}
else // 十字架所占的'#'注销掉,以避免阻碍判断下一个十字架
{
cell[i+][j] = '.';
cell[i+][j-] = '.';
cell[i+][j+] = '.';
cell[i+][j] = '.';
}
}
}
}
if (!flag)
printf("YES\n");
}
return ;
}

最新文章

  1. bootstrapvalidator+bootstrap-select select无法校验问题解决方法
  2. 浅尝ECMAScript6
  3. Hibernate批量处理数据
  4. jQuery上传插件,文件上传测试用例
  5. Javascript原型链
  6. iOS 开发者必不可少的 75 个工具
  7. SqlServer和Oracle中一些常用的sql语句8 触发器和事务
  8. Linux中MySQL忽略表中字段大小写
  9. scp传输提示bash: scp: command not found
  10. java34
  11. go对json对象的生成和解析
  12. gym102007 E
  13. 版本管理工具Git(3)VS2013下如何使用git
  14. java的两种同步方式, Synchronized与ReentrantLock的区别
  15. C# 获取web.config配置文件
  16. hdu-1060(数学问题)
  17. HDU 2594 KMP
  18. ChemDraw在苹果电脑上能不能用
  19. php strtok()函数用法,及使用时遇到的问题
  20. Eclipse for PHP Developers 配置记录

热门文章

  1. Java -----transient 和static
  2. javascript --- 原型继承与属性拷贝的综合应用
  3. Scut游戏服务器免费开源框架--快速开发(1)
  4. boost exception jam0.exe 异常错误
  5. 第九讲_图像生成 Image Captioning
  6. Ural 2018The Debut Album(DP)
  7. JavaScript-4.7-friendly_table---ShinePans
  8. maven的学习系列(二)—maven的文件夹结构
  9. 怎样把多个Android Project打包成一个APK
  10. python(13)- 文件处理应用Ⅱ:增删改查