美國最大鄰里社交平臺 Nextdoor SPAC 上市,不懼 Facebook 挑戰
阿新 • • 發佈:2021-07-06
題目:
https://vjudge.net/problem/HDU-1241
思路:
dfs
每碰到油庫就八方向搜
程式碼:
#include<stdio.h> #include<string.h> int vis[103][103]; char si[103][103]; struct node { int x,y; }; int n,m; int dx[9]={0,0,1,-1,1,-1,1,-1}; int dy[9]={1,-1,0,0,-1,1,1,-1}; void dfs(node s) { vis[s.x][s.y]=1; int x=s.x;int y=s.y; for(int i=0;i<8;i++) { int tx=x+dx[i]; int ty=y+dy[i]; if(!vis[tx][ty]&&si[tx][ty]=='@'&&tx>=1&&tx<=n&&ty>=1&&ty<=m) { node nw; nw.x=tx; nw.y=ty; dfs(nw); } } }int main() { while(1) { scanf("%d %d",&n,&m); if(n==0&&m==0) break; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf(" %1c",&si[i][j]); } }int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(!vis[i][j]&&si[i][j]=='@') { node s; s.x=i; s.y=j; dfs(s); ans++; } } } printf("%d\n",ans); } }