图像有用区域--------深搜和广搜的第一次二选一

因为黑边可能会出现在 四周 这样的话就不是太好处理了  所以想到了 将已经给的图扩大一下  将四周再围上 一圈然后开始搜索   思路出来了

然后就直接开始 搜索 上去就选择了  写着方便的  深搜  因为数据量比较大的原因 果断超时    ........

既然写了就    附上深搜代码吧   留个纪念 以后省的浪费时间

#include<stdio.h>
#include<string.h>
int a[1444][970],n,m;
void DFS(int i,int j)    //  传进去  坐标  并且开始搜索   遇到  非0 的时候 将其变成 0  ,  遇到 0的时候   不作处理  return 回去
{
    if(!(i>=0&&i<=m+1&&j>=0&&j<=n+1))  //  不在范围的话  退回一步
        return ;
    else          //在范围的话
    {
        if(a[i][j]==0)
            return ;
        else
            a[i][j]=0;
    }
    DFS(i+1,j);
    DFS(i,j+1);
    DFS(i,j-1);
    DFS(i-1,j);
}
int main()
{
    int t,i,j;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        memset(a,1,sizeof(a));
        for(i=1;i<=m;i++)          //               高度
            for(j=1;j<=n;j++)  //           宽度
            scanf("%d",&a[i][j]);
        DFS(0,0);
        for(i=1;i<=m;i++)          //               高度
        {
            for(j=1;j<n;j++)  //           宽度
            {
                printf("%d ",a[i][j]);
            }
            printf("%d
",a[i][n]);
        }

    }
    return 0;
}
原文地址:https://www.cnblogs.com/A-FM/p/5291125.html