dfs+记忆化 #3没过看不出原因 求大佬帮调

P1141 01迷宫

@[silencer468](/user/1104397) ```c #include<iostream> #include<cstring> #include<cstdio> using namespace std; int fx[5]={-1,0,0,1},fy[5]={0,-1,1,0},ans[100005]; bool mp[1050][1050]; int visited[1050][1050]; int s,n,m; void f(int x,int y,int sign,int v) { //cout<<x<<' '<<y<<' '<<sign<<endl; if(x<0||x>=n||y<0||y>=n) return; if(mp[x][y]==sign||visited[x][y]) return; s++; visited[x][y]=v; for(int i=0;i<4;i++) { f(x+fx[i],y+fy[i],mp[x][y],v); } return; } int main() { cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { char t; cin>>t; // cout<<"aa "<<t<<endl; mp[i][j]=t-'0'; } } for(int i=0;i<m;i++) { int x,y; cin>>x>>y; if(visited[x-1][y-1]) { cout<<ans[visited[x-1][y-1]]<<endl; }else { s=0; f(x-1,y-1,!mp[x-1][y-1],i+1); ans[i+1]=s; cout<<s<<endl; } } return 0; } ```
by xxc123 @ 2024-03-15 20:59:47


@[xxc123](/user/787732) 佬,你的代码思路和我差不多,那我是错在哪里呢?
by silencer468 @ 2024-03-15 23:53:06


|