本文主要是介绍小怂爱水洼DFS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
分析:
非常明显的搜索问题,当时我在写的时候遇到了两个问题,就一直没过。
1.忘记判断临界条件,x,t不能越界的问题;
2.最后有两个案例一直不能过,就是因为我用的int型的接受结果范围太小了,用longlong一下就过了。
示例代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e2+5;
int mp[N][N],vis[N][N];
int n,m;
long long ans;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y){if(mp[x][y]==0||vis[x][y]||x<1||x>n||y<1||y>m)return;vis[x][y]=1;ans+=mp[x][y];for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i]; dfs(nx,ny);}
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>mp[i][j];long long sum=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(mp[i][j]==0||vis[i][j])continue;//ans=0;dfs(i,j);sum=max(sum,ans);//memset(vis,0,sizeof(vis));} cout<<sum;return 0;
}
这篇关于小怂爱水洼DFS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!