深搜题,玄关求优化
  • 板块灌水区
  • 楼主yitian_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/13 23:05
  • 上次更新2024/4/14 10:01:44
查看原帖
深搜题,玄关求优化
1263486
yitian_楼主2024/4/13 23:05

超时了,求大佬用深搜优化

我的代码:

#include<bits/stdc++.h>
using namespace std;
 
int n,m,num,ans,dx[8]={0,0,1,-1},dy[8]={1,-1,0,0};
int a[600][600]={0};
int b[600][600]={0};
 
void dfs(int x,int y)
{
    int q,w;b[x][y]=1;
    for(int i=0;i<4;i++)
    {
        q=x+dx[i];
        w=y+dy[i];
        if(q>=1&&w>=1&&q<=n&&w<=n&&a[q][w]==a[x][y]&&b[q][w]==0)
        {
            dfs(q,w);   
        }
    }
}
 
int main()
{
    scanf("%d%d",&n,&m); 
    for(int k=0;k<m;k++)
    {
        int c,x,y;
        scanf("%d%d%d",&c,&x,&y); 
        a[x][y]=c+1;
        if(a[x][y-1]==0&&a[x][y+1]==0&&a[x+1][y]==0&&a[x-1][y]==0)
        {
            ans++;
        }
        else
        {
            ans=0;
            for(int i=1;i<=n;i++)
            {   
                for(int j=1;j<=n;j++)
                {
                    if(a[i][j]!=0&&b[i][j]==0)
                    {   
                        dfs(i,j);
                        ans++;
                    }
                }
            }
        }
        memset(b,0,sizeof(b));  
        printf("%d\n",ans);
    }
    return 0;
} 
2024/4/13 23:05
加载中...