牛客网 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集 ---dfs+规律

点击打开链接

思路:使用dfs搜索时,存在一个规律:满足条件的两个格子其横纵坐标之和的奇偶性必相反,这样,只需遍历此连通块中所有格子的横纵坐标和,判断其奇偶性,求ans=min(ans1,ans2)即可,ans1为奇数个数,ans2为偶数个数

#include
#include
using namespace std;
const int maxn=50+5;
const int dx[]={-1,1,0,0};
const int dy[]={0,0,-1,1};
char str[maxn][maxn];
int n,ans1,ans2;
void dfs(int x,int y)
{
    str[x][y]='.';
    (x+y)&1?ans1++:ans2++;
    for(int i=0;i<4;i++)
    {
        int nx=x+dx[i],ny=y+dy[i];
        if(nx>=0&&nx=0&&ny

你可能感兴趣的:(DFS)