这个题我一开始没思路,最后也没思路

2个小时一直没思路

本来还想解释题意的,写了半天发现解释的不是很清楚,你还是google翻译一下吧

这个题解法是这样的:

首先,给你图案里面有很多的点,每个点的周围8个点都不可能在上面落笔,因为你一旦在周围8个点落笔,必定会覆盖掉这个点,

其次,每一个有#的地方,他周围8个点一定有一个地方能够落笔

所以我们把所有不可能落笔的点都记录下来,再判断每一个#的地方,假设周围有能落笔的地方,说明可以画

只要找到一个#周围没有可以落笔的地方,输出no

(  笔不能超过纸张,也就是说落笔范围在(1,1)(n-2,m-2)这个矩形里面)

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+;
char arr[maxn][maxn];
bool vis[maxn][maxn];
int n,m;
void painw(int x,int y)
{
vis[x+][y] = vis[x+][y-] = vis[x+][y+] = vis[x-][y] = vis[x-][y-] = vis[x-][y+] = false;
vis[x][y+] = vis[x][y-] = false;
}
bool pan(int x,int y)
{
bool f = false;
for(int i = -;i <= ;++i)
{
for(int j = -; j <= ; ++j)
{
//cout << x+i << " " << y+j << endl;
if(x+i <= || x+i >= n || y+j <= || y+j >= m)
continue;
if(i == && j == )
continue;
if(vis[x+i][y+j] == true)
f = true;
}
}
//cout << f << endl;
return f;
}
int main()
{
scanf("%d%d",&n,&m);
int cnt = ;
memset(vis,true,sizeof(vis));
for(int i = ; i <= n; ++i)
{
getchar();
for(int j = ; j <= m; ++j)
{
scanf("%c",arr[i]+j);
if(arr[i][j] == '.')
painw(i,j);
}
}
for(int i = ; i <= m+; ++i)
vis[][i] = vis[n+][i] = false;
for(int i = ; i <= n+; ++i)
vis[i][] = vis[i][m+] = false; /*for(int i = 0; i <=n+1; ++i)
{
for(int j = 0; j <= m+1; ++j)
printf("%d",vis[i][j]);
printf("\n");
}*/ for(int i = ; i <= n; ++i)
{
for(int j = ; j <= m; ++j)
{
if(arr[i][j] == '#' && pan(i,j) == false)
{
printf("NO\n");
return ;
}
}
}
printf("YES\n");
return ;
}

最新文章

  1. css3clock.js - 一个用CSS3与纯js实现的简单时钟
  2. 修复百度编辑器(UM)禁用时上传图片按钮还可点击的BUG;
  3. 使用php技术实现无刷新的上传文件
  4. 转载:C#中的Invoke理解一
  5. day7----面向对象编程进阶
  6. 掌上PDA无线下单 移动开单设备 手持POS终端打印扫描开单进销软件
  7. 请注意designer中的NAME field
  8. 新浪SAE URLRewrite(伪静态、重定向)详解
  9. log4net使用的一点心得
  10. hihocoder 1077线段树
  11. form 和 ngModel
  12. substr,substring,slice 的区别
  13. 如何安装 Composer
  14. 剑指offer(15)反转链表
  15. JMeter如何使用用户定义的变量
  16. C语言实型常量
  17. 《C#并发编程经典实例》学习笔记—异步编程关键字 Async和Await
  18. 如何在基于Bytom开发过程中集成IPFS
  19. Linux驱动的两种载入方式过程分析
  20. 安卓四大组件之Sevice组件的简单使用 --Android基础

热门文章

  1. java 性能测试框架工具-junitperf
  2. [java,2017-05-15] 内存回收 (流程、时间、对象、相关算法)
  3. centos7 设置系统默认启动的界面
  4. android 开发 View _10_ Path之基本操作
  5. centOS7安装kafka和zookeeper
  6. Linux Shell 简介
  7. Python介绍与安装
  8. 关于http以及aphace配置https
  9. texmaker报错:could not start command 解决
  10. 【转】IO多路复用机制详解