1 条题解
-
-1
用深搜解题,dfs(i,j)把第i行第j列给深搜(递归)下去,4个方向都去搜一遍,最终得出答案。 #include<bits/stdc++.h> using namespace std; const int dx[4]={-1,0,1,0}; const int dy[4]={0,-1,0,1}; int n,m; string c[1005]; bool f[1005][1005]; void dfs(int x,int y) { f[x][y]=1; for(int i=0;i<=3;i++) { int x1=x+dx[i],y1=y+dy[i]; if(x1>n||x1<1||y1>m||y1<1)continue; if((!f[x1][y1])&&(c[x1][y1]!='0'))dfs(x1,y1); } return ; } signed main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>c[i]; c[i]=' '+c[i]; } int ans=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if((!f[i][j])&&(c[i][j])!='0') { ans++; dfs(i,j); } cout<<ans; return 0; }
- 1
信息
- ID
- 75
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 139
- 已通过
- 88
- 上传者