搜索
求最长可走多少路的代码:
void dfs(int x,int y,int cnt)
{
    v[x][y]=1;                               //开始就标,避免漏掉起点
    ans=max(ans,cnt);
    for(int i=0;i<4;i++)
    {
        int xx=x+dir[i][0];                     
        int yy=y+dir[i][1];                        //有小于0的情况
        if(check(xx,yy)&&m[xx][yy]!='#')        //check函数要写在前面,不然数组会越界
        {
            dfs(xx,yy,cnt+1);    
        }
    }
    v[x][y]=0;
}
求最大连通图:
void dfs(int x,int y)
{
    v[x][y]=1;                        //不需要清除标记
    ans++;                            //能走就加1
    for(int i=0;i<4;i++)
    {
        int xx=x+dir[i][1];
        int yy=y+dir[i][0];
        if(check(xx,yy)&&m[xx][yy]!='#')
        {
            dfs(xx,yy);   
        }
    }
}
                    
                
                
            
        
浙公网安备 33010602011771号