搜索部分不理解
  • 板块P1683 入门
  • 楼主wenjiayi
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/25 10:25
  • 上次更新2024/7/25 11:19:38
查看原帖
搜索部分不理解
1106580
wenjiayi楼主2024/7/25 10:25
#include<bits/stdc++.h>
using namespace std;
int w,h,num;
bool st[25][25];
char a[25][25];
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
void dfs(int x,int y)
{
    for(int i=0;i<4;i++)
    {
        int xx=x+dx[i];
        int yy=y+dy[i];
        if(a[xx][yy]=='.')
        {
            if(!st[xx][yy])
              num++;
            st[xx][yy]=1;
            dfs(xx,yy);
        }
        
    }
}
int main()
{
    cin>>w>>h;
    int b,c;
    for(int i=1;i<=w;i++)
    {
        for(int j=1;j<=h;j++)
        {
            cin>>a[i][j];
            if(a[i][j]=='@')
            {
                b=i,c=j;
            }
        }
    }
    dfs(b,c);
    cout<<num+1;
}

题目不是说可以重复走过但是不重复计数吗,这样写就MLE了,但是把判断是否走过的st[i]放在if(a[xx][yy]=='.')里面也只过了一个点,请求大佬指教

2024/7/25 10:25
加载中...