【2018年全国多校算法寒假训练营练习比赛(第四场)-D】小明的挖矿之旅
题目链接:https://www.nowcoder.com/acm/contest/76/D
做题时没注意到“无论出现在哪个格子”。。题中也没说明一个格子只能经过一次,其实没有想象的复杂。
判断如果点的下边或右边不能走,传送门数+1。特判只有一个‘.’传送门数为0
代码:
#include<bits/stdc++.h>
using namespace std;
char mp[1004][1004];
int main()
{
int n, m, i, j;
while(~scanf("%d%d", &m, &n))
{
int ans = 0, sum = 0;
for(i = 0; i < m; i++) scanf("%s", mp[i]);
for(i = 0; i < m ; i++)
for(j = 0; j < n; j++)
{
if(mp[i][j] == '.')
{
sum++;
if((mp[i+1][j] == '#' || i == m-1) && (mp[i][j+1] == '#' || j == n-1))
ans++;
}
}
if(sum == 1) ans = 0;
printf("%d\n", ans);
}
return 0;
}