搜索
求最长可走多少路的代码:
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号