OKRET

· · 题解

题意要求我们从一个 nm 列的地图中,找到一个上下左右只有一条路的通道。

根据题意,我们只需要将一个通道确定,再对数组中上下左右的通道累计即可。

该题使用双重循环模拟,小心数组为 -1 时 RE ,便可以从数组位置 1 开始计数。

当其中一个点旁边只有一条通道时就是死胡同,可以直接输出 1 ,结束程序。

至于输出 0 ,我们只需要再在最后输出就行了。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    char a[12][12];
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
        cin>>a[i][j];
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        if(a[i][j]=='.')
        {
            int q=0;
            if(a[i+1][j]=='.')
                q++;
            if(a[i-1][j]=='.')
                q++;
            if(a[i][j+1]=='.')
                q++;
            if(a[i][j-1]=='.')
                q++;
            if(q==1)
            {
                cout<<1;
                return 0;
            }
        }
    }
    cout<<0<<endl;
    return 0;
}