求助,非常急,玄5关

P1506 拯救oibh总部

语言:C++98
by _X_M_ @ 2024-02-01 12:00:13


样例全过,全WA,0分,[评测记录](https://luogu.com.cn/record/145553758)
by _X_M_ @ 2024-02-01 12:03:04


看了半天,没看出问题
by _X_M_ @ 2024-02-01 12:07:36


``` 4 4 **** *00* *00* **** ``` 你觉得这个数据的答案是是多少?
by yuyc @ 2024-02-01 12:24:55


@[_X_M_](/user/988099) 你觉得这题放在搜索会有这种解法吗?下面是我的代码,用的是`dfs`,思路是将会被水淹没的地方标成2,然后统计没有被淹没的地方的个数。 ```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-02-01 12:35:39


@[yuyc](/user/239562) @[yaodiguoan](/user/1023793) 谢谢,已关,结帖
by _X_M_ @ 2024-02-02 12:19:17


@[_X_M_](/user/988099) ?
by danlao @ 2024-02-02 13:46:29


@[yaodiguoan](/user/1023793) 问题结束了就不再继续无意义的关注了
by _X_M_ @ 2024-02-04 10:11:31


|