深搜+映射+集合
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]=='*')
{
cnt=0;
dfs(i,j);//只要找到一个星星,就值得深搜下去
map[cnt]+=cnt;//map刻画的就是一个一个星系,里面存放的是星星的个数
maxv=max(maxv,map[cnt]);//举个例子,map[1]表示以1为最小单位的星系里包含的星星数量
s.insert(cnt);//每多一种个数,就意味着会多一种星系。把他们都丢到set中,set会判重。
}
cout<<s.size()<<' '<<maxv<<endl;
return 0;
}
然后,看一下深搜主体
void dfs

这篇博客详细解析了洛谷P6566题目,主要利用深度优先搜索(DFS)结合映射和集合进行求解。博主通过深入探讨深搜的主体部分,分享了完整的代码实现。
最低0.47元/天 解锁文章
331





