3229: 三子棋

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:13 解决:5

题目描述

## 题目描述 33DAI 很喜欢三子棋。今天他在一张很大的方形棋盘上下棋,棋盘可以看作是一个 $n$ 行 $m$ 列的网格。(大家应该知道三子棋是下在格子里面的吧?) 33DAI 今天的玩法非常不一样。棋盘上有些位置上有棋子,有些位置上没有。所有的棋子都是己方棋子。33DAI 可以任选一个空着的位置下棋。如果他落子的位置能和周边的另外两个棋子构成三连(横着、竖着、斜着都可以),那么这就是一个好位置。 请你帮 33DAI 找找棋盘上有多少个好位置吧! ## 输入格式 第一行为空格隔开的两整数 $n$,$m$。 接下来 $n$ 行,每行为 $m$ 个字符,描述了整个棋盘,第 $i$ 行第 $j$ 列的字符为 $g_{i,j}$,描述了第 $i$ 行第 $j$ 列的格子。 如果字符为 `.` 则表示这个位置没有棋子,如果字符为 `#` 则表示这个位置有一个己方棋子。 ## 输出格式 一行一个整数,表示有多少个空着的位置是好位置。 ```input1 5 7 ....... ...#... ...##.. ....... ...#..# ``` ```output1 6 ``` ## 样例解释 下面用字符 `o` 标出了所有好位置 ``` ..oo... ...#... ..o##o. ...o.o. ...#..# ``` ## 数据规模与约定 对于 $100\%$ 的数据,$1\le n, m\le 50$,$g_{i,j}$ 为 `.#` 中的一种。 - 子任务 1($30$ 分):保证有且仅有两个位置为 `#` - 子任务 2($30$ 分):保证每个 `#` 与其他 `#` 的行数要么相同,要么相差大于 $2$。即不会产生竖着、斜着的三连。 - 子任务 3($40$ 分):无特殊限制