【题目链接】

OpenJudge NOI 1.8 17:最好的草

【题目考点】

1. 二维数组

2. 方向数组

表示上下左右的方向数组:
int dir[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};

int dx[4] = {0,0,1,-1}, dy[4] = {1,-1,0,0};

【解题思路】

理解题意,相邻两个’#'算作一块草丛。
可以理解为:
.#. 是1个草丛

.## 是1个草丛

### 是2个草丛

.#.
### 是4个草丛
.#.
因而每个#有两种情况:

  • 参与到一个两个#组成的草丛中,相当于每个#贡献0.5个草丛。如果它周围有x个#,它就会参与构成x个草丛,它贡献的草丛数为0.5x0.5x0.5x
  • 单独形成一个草丛,每个#贡献1个草丛

为了避免处理小数,把上述推导中的小数变为整数,改为计分制,一个草丛算2分,叙述如下:
遍历整个二维数组,如果当前位置是#,则遍历其周围上下左右四个位置

  • 如果这四个位置中存在#,则中心位置参与构成两个#的草丛。每存在一个#,加1分。
  • 如果四个位置不存在#,那么中心位置的#独自构成一个草丛,加2分。

最后将总分数除以2,即为草丛的个数。

【题解代码】

解法1:二维方向数组

#include <bits/stdc++.h>
using namespace std;
#define N 105
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int main()
{//单独的草算2分,如果由2块组成的草一定会被计算两次,每个算1分。最后除以2。char a[N][N];int r, c, s = 0;cin >> r >> c;for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++)cin >> a[i][j];for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++){if(a[i][j] == '#'){bool flag = false;//i,j周围有是否有草for(int d = 0; d < 4; d++){int x = i + dir[d][0], y = j + dir[d][1];if(x >= 1 && x <= r && y >= 1 && y <= c && a[x][y] == '#'){s++;flag = true;}}if(flag == false)//一个#单独构成草丛s += 2;}}cout << s/2;return 0;
}

解法2:一维方向数组

#include <bits/stdc++.h>
using namespace std;
#define N 105
int dx[4] = {0,0,1,-1}, dy[4] = {1,-1,0,0};
int main()
{char a[N][N];int r, c, s = 0;cin >> r >> c;for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++)cin >> a[i][j];for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++){if(a[i][j] == '#'){bool flag = false;//i,j周围有没有草for(int d = 0; d < 4; d++){int x = i + dx[d], y = j + dy[d];if(x >= 1 && x <= r && y >= 1 && y <= c && a[x][y] == '#'){s++;flag = true;}}if(flag == false)s += 2;}}cout << s/2;return 0;
}

OpenJudge NOI 1.8 17:最好的草相关推荐

  1. OpenJudge NOI 1.7 17:字符串判等

    [题目链接] OpenJudge NOI 1.7 17:字符串判等 [题目考点] 1. 字符串 2. 大小写转换 'a'的ASCII码是97,'A'的ASCII码是65,同一字母的大小写字母的ASCI ...

  2. 信息学奥赛一本通 1071:菲波那契数 | OpenJudge NOI 1.5 17:菲波那契数列

    [题目链接] ybt 1071:菲波那契数 OpenJudge NOI 1.5 17:菲波那契数列 [题目考点] 1. 斐波那契数列 参考:多种方法求斐波那契数列 [解题思路] 迭代法求斐波那契数列 ...

  3. 信息学奥赛一本通 1055:判断闰年 | OpenJudge NOI 1.4 17

    [题目链接] ybt 1055:判断闰年 OpenJudge NOI 1.4 17:判断闰年 [题目考点] 1. 闰年定义 整百年份中,能被400整除的年份才是闰年 非整百年份中,能被4整除的年份是闰 ...

  4. 信息学奥赛一本通 1034:计算三角形面积 | OpenJudge NOI 1.3 17

    [题目链接] ybt 1034:计算三角形面积 OpenJudge NOI 1.3 17:计算三角形面积 [题目考点] 1. 已知三点求三角形面积公式 已知三点分别为(x1,y1),(x2,y2),( ...

  5. 信息学奥赛一本通 2050:【例5.20】字串包含 | OpenJudge NOI 1.17 19:字符串移位包含问题

    [题目链接] ybt 2050:[例5.20]字串包含 OpenJudge NOI 1.17 19:字符串移位包含问题 [题目考点] 1. 字符串 2. 判断一个字符串是不是另一个字符串的子串(字符串 ...

  6. 【OpenJudge NOI】题解目录

    [OpenJudge NOI]题解目录 OJ链接:OpenJudge NOI 以下为本人做的OJ题解 针对每一道题我都会给出题目考点.解题思路.题解代码.必要时也会给出不同的解题方法. 如有不足之处, ...

  7. 信息学奥赛一本通 1066:满足条件的数累加 | OpenJudge NOI 1.5 10

    [题目链接] ybt 1066:满足条件的数累加 OpenJudge NOI 1.5 10:满足条件的数累加 [题目考点] 1. 循环求和 设置加和变量s,记住要将其初始化为0.int s = 0; ...

  8. OpenJudge NOI题库 1.5编程基础之循环控制

    OpenJudge NOI题库 1.5编程基础之循环控制 OpenJudge - OpenJudge - 题目 1.5_01求平均年龄 1.5_01求平均年龄_哔哩哔哩_bilibili 1.5_02 ...

  9. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

最新文章

  1. 共话数据智能新经济,首届市北·GMIS 2019全球数据智能峰会隆重召开
  2. 除了不要 SELECT * ,数据库还有哪些技巧
  3. EggNOG功能注释数据库在线和本地使用
  4. 2021年人工神经网络第四次作业:基于MATLAB的求解
  5. 从零开始入门 K8s | 调度器的调度流程和算法介绍
  6. asp.net 调用带证书的webservice解决办法
  7. django 怎么加权限 静态资源目录_Django:settings中关于static静态文件目录的设置...
  8. java垃圾回收机制标记_Java的垃圾回收机制-垃圾收集算法(一)
  9. 解决margin-top塌陷问题的六种方法
  10. 如何实现二级菜单 html,javascript,html5_如何用vue实现二级菜单栏,javascript,html5,html,vue.js - phpStudy...
  11. Visual Studio Node.js工具1.1
  12. 全球排名前50网站使用的开发语言及系统平台
  13. ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
  14. Illustrator导入word中的visio图片方法
  15. 一次学会两种方式将 python 打成 exe
  16. 数字图像处理——图像边缘检测
  17. MySQL函数 if 的使用
  18. 高等数学几何图形凸优化
  19. 更改MyEclipse匹配颜色
  20. 程序猿头头(js数组reverse,sort,concat,slice, splice)

热门文章

  1. GConf error:Failed to contact configuration server
  2. 基于visual Studio2013解决面试题之0410计算二进制中1的个数
  3. 20 行 Python 代码说清量子霸权!
  4. 一个秒杀系统,居然比八股文还好使!
  5. Java 14 发布了,再也不怕NullPointerException 了!?
  6. 开发指南专题一: JEECG微云快速开发平台前言
  7. JEECG v2.3 发布,基于代码生成器的智能开发框架
  8. 爬虫神器:一条命令下载《复仇者联盟3:无限战争》
  9. apache/nginx中equest.getServerName()外网环境获取不到代理地址/域名
  10. Mybatis中接口和对应的mapper文件位置配置详解