题意:就是找一个给定点能走的步数(上下左右)
分析:直接DFS深搜。第一次这么顺的写出了DFS,好高兴,死磕DFS之后果然有进步
代码:
#include<iostream> #include<cstring> using namespace std; int t,m,n; int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; char a[30][30]; int sx,sy; int cnt; void dfs(int x,int y) { if(a[x][y]=='#') return; cnt++; a[x][y]='#'; for(int i=0;i<4;i++){ int dx=x+d[i][0]; int dy=y+d[i][1]; if(dx>=0&&dx<n&&dy>=0&&dy<m){ dfs(dx,dy); } } } int main() { cin>>t; for(int i=1;i<=t;i++){ cnt=0; cin>>m>>n; for(int j=0;j<n;j++) for(int k=0;k<m;k++){ cin>>a[j][k]; if(a[j][k]=='@') sx=j,sy=k; } dfs(sx,sy); cout<<"Case "<<i<<": "<<cnt<<endl; } }