题面传送门

其实这题根本不用搜索,有耐心即可。

可以发现,在 \(n\times m\) 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *,红色表示不能是 *,其中黄色五角星表示当前 \(i,j\) 的位置。

所以只要把 * 标记为 \(1\),全图扫一遍,发现合法就给它变 \(0\),看最后有没有 \(1\) 剩余即可。

Code:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int T,n,m,a[55][55];
char c;
void search(int i,int j){
if(a[i+1][j]&&a[i+1][j+1]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i][j-1]&&!a[i][j+1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j+2]&&
!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]&&!a[i+2][j+2]){
a[i][j]=a[i+1][j]=a[i+1][j+1]=0;
return ;
}
if(a[i+1][j-1]&&a[i+1][j]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i][j-2]&&!a[i][j-1]&&!a[i][j+1]&&!a[i+1][j-2]&&!a[i+1][j+1]&&
!a[i+2][j-2]&&!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]){
a[i][j]=a[i+1][j-1]=a[i+1][j]=0;
return ;
}
if(a[i][j+1]&&a[i+1][j+1]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i-1][j+2]&&!a[i][j-1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j]&&
!a[i+1][j+2]&&!a[i+2][j]&&!a[i+2][j+1]&&!a[i+2][j+2]){
a[i][j]=a[i][j+1]=a[i+1][j+1]=0;
return ;
}
if(a[i][j+1]&&a[i+1][j]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i-1][j+2]&&!a[i][j-1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j+1]&&
!a[i+1][j+2]&&!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]){
a[i][j]=a[i][j+1]=a[i+1][j]=0;
return ;
}
}
void solve(){
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='*') a[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1) search(i,j);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1){
printf("NO\n");
return ;
}
}
}
printf("YES\n");
}
int main(){
scanf("%d",&T);
while(T--) solve();
return 0;
}

最新文章

  1. 大数据系列-CDH环境中SOLR入数据
  2. JdbcTemplate使用总结
  3. POJ1326问题描述
  4. Nginx工作原理和优化
  5. C++组合问题
  6. HDU 5311 Hidden String (暴力)
  7. 转化为用欧几里得算法判断互质的问题D - Wolf and Rabbit
  8. 修改替换/system/framework/framework.jar后重启手机为何没有效果?
  9. Linux IP_FORWARD说明
  10. 二叉树Bynary_Tree(2):二叉树的递归遍历
  11. 远程服务调用(RMI)
  12. 【Learning】 欧拉回路的求解
  13. spring-data-rest的魔力 10分钟实现增删改查
  14. UVA10723 电子人的基因 Cyborg Genes
  15. Python_装饰器进阶_32
  16. tomcat redis 集群 session共享
  17. JMS学习(八)-ActiveMQ Consumer 使用 push 还是 pull 获取消息
  18. PHP检测数组中的每个值是否含有特殊字符
  19. 高德地图JS-API (超简单Get新技能√)
  20. SQL2008R2 安装图解

热门文章

  1. session,cookie,jwt的简单使用
  2. 【MySQL】从入门到掌握1-一些背景知识
  3. 【java】学习路径16-重写Object方法(equals()等)
  4. 牛客练习赛99—C
  5. 第六篇:vue.js模板语法(,属性,指令,参数)
  6. 第十四章 二进制部署k8s集群的平滑升级
  7. Session认证机制与JWT认证机制
  8. spark 读取Geomesa(Hbase)数据
  9. Linux查看文件内容和压缩文件命令
  10. es,logstash各版本对应要求的JDK版本,操作系统对应示意图