ecna2017-Sheba’s Amoebas
很简单的深搜的一道题,由于这道题要找环的个数,并且认为相连当一个点的8个方向种中有一个方向和这个点相连。
这个题做法无非就是暴力每个点,然后满足条件的深搜即可。
感觉我自己的代码写的很无趣,大佬的代码都是没用vis数组判断,满足条件#的直接变成。即可
#include<bits/stdc++.h> using namespace std; char mmp[150][150]; int n,m,ans=0; int to[8][2]= {{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}}; bool judge(int x,int y) { if(x<0||y<0||x>=n||y>=m||mmp[x][y]=='.') return 0; return 1; } void dfs(int x,int y) { mmp[x][y]='.'; for(int i=0; i<8; i++) { int tx=x+to[i][0]; int ty=y+to[i][1]; if(judge(tx,ty)) dfs(tx,ty); } } int main() { cin>>n>>m; for(int i=0; i<n; i++) for(int j=0; j<m; j++) cin>>mmp[i][j]; for(int i=0; i<n; i++) for(int j=0; j<m; j++) if(mmp[i][j]=='#') { dfs(i,j); ans++; } cout<<ans<<endl; return 0; }
有不懂欢迎咨询
QQ:1326487164(添加时记得备注)