@[M15388049303](/user/1078808) `if(tx>=0&&tx<x&&ty>=0&&ty<y&&a[tx][ty]==0)`你的 `a` 数组不是 `char` 类型的吗?没判断重复路线,要加上 `!b[tx][ty]`
by danlao @ 2024-03-03 14:19:34
@[M15388049303](/user/1078808) 或者像我这样写
```cpp
#include <iostream>
using namespace std;
#define FOR(i,j,n,k) for(int i=(j);i<=(n);i+=k)
#define ROR(i,j,n,k) for(int i=(j);i>=(n);i-=k)
const int upint=1e6+10;
const double downdouble=1e-6;
int n,m,cnt;
int dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
char map[510][510];
void dfs(int x,int y){
map[x][y]='1';
for(int i=1;i<=4;i++){
int tx=x+dx[i],ty=y+dy[i];
if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&map[tx][ty]=='0') dfs(tx,ty);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>map[i][j];
for(int i=1;i<=n;i++){
if(map[i][1]=='0') dfs(i,1);
if(map[i][m]=='0') dfs(i,m);
}
for(int i=1;i<=m;i++){
if(map[1][i]=='0') dfs(1,i);
if(map[n][i]=='0') dfs(n,i);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(map[i][j]=='0') cnt++;
printf("%d",cnt);
return 0;
}
```
by danlao @ 2024-03-03 14:20:49
过了
本贴完
关注了
by M15388049303 @ 2024-03-03 14:22:14
@[M15388049303](/user/1078808) 为啥我看不了你的评测记录??
by danlao @ 2024-03-03 14:23:52