目录

题目



为了小埋A了这道题。

思路

读入原来的矩阵,将不是雷的格子更新为数字(数字就是该格子周围八格的雷的个数)将是雷的格子赋值为inf。然后就按照题目要求计算周围八格没有“空格”的“数字”个数和“空"的个数。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<iomanip>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f;
int n,m,sum1,sum2;
int dx[10]={0,1,-1,1,1,-1,-1,0,0},dy[10]={0,0,0,1,-1,1,-1,1,-1};
bool map0[1001][1001];
int map1[1001][1001];
inline int read(){
int x=0;
bool f=0;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return f?-x:x;
}//读优
void js(int x,int y){
int sum=0;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map0[c][d]) sum++;
}
map1[x][y]=sum;
}//更新数字的函数
bool pd(int x,int y){
bool qaq=0;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map1[c][d]==0){
qaq=1;
break;
}
}
if(qaq) return false;
return true;
}
void k(int x,int y){
map1[x][y]=-1;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map1[c][d]==0){
k(c,d);
}
}
} int main(){
n=read();m=read();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
map0[i][j]=read();
if(map0[i][j]) map1[i][j]=inf;
}
}//读入,和预处理。
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(!map0[i][j]) js(i,j);
}
}//更新数字。
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(map1[i][j]!=0&&map1[i][j]!=inf){
if(pd(i,j)) sum1++;
}
}
}//计算周围八格没有空格的个数
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(map1[i][j]==0){
k(i,j);
sum2++;
}
}
}//计算空的个数
cout<<sum1+sum2;
return 0;
}

最新文章

  1. Jquery中each的三种遍历方法
  2. 吉特仓库管理系统-.SQL Server 2012 升级企业版
  3. hibernateTemplate.find或hibernateTemplate.save()执行操作没有反应,但是有sql语句
  4. sublime text多文件夹查找关键字
  5. HDU 4670 Cube number on a tree
  6. (转载)Javascript 进阶 作用域 作用域链
  7. NSIS:迅雷5.8.6.600自由定制版脚本及下载
  8. linux undelete
  9. 使用 PUTTY 操作 Google Cloud
  10. Java中常用的数据结构类
  11. Java结合SpringBoot拦截器实现简单的登录认证模块
  12. UC和QQ两个主流浏览器 * 点击触发微信分享到朋友圈或发送给朋友的功能(转载)
  13. 李航《统计学习方法》CH01
  14. Zabbix客户端日志出现(Not all processes could be identified, 解决
  15. BZOJ.3351.[IOI2009]Regions(根号分治 差分)
  16. 基于maven构建javaweb项目思路梳理及改进
  17. JVM 字节码(三)异常在字节码中的处理(catch 和 throws)
  18. Building Tablet PC Applications ROB JARRETT
  19. CMSIS-DAP for STLink V2.1 and STLink v2.1 mini adapter
  20. 【Nginx笔记】 fastcgi_param解释

热门文章

  1. Jenkins之发布报错“error: RPC failed; curl 18 transfer closed with outstanding read data remaining”
  2. DTO和ViewModel的区别
  3. Linux 安装gcc4.8版本
  4. oracle删除数据库表空间
  5. nodejs下express+ejs环境搭建
  6. 微信小程序开发-微信登陆流程
  7. copyin函数
  8. mysql命令行执行时不输出列名(字段名)
  9. JavaEE汇总
  10. webpack前端构建工具学习总结(四)之自动化生成项目中的html页面