P1683 入门 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
深搜题 类似于迷宫
注意:瓷砖可以重复走过,但不能重复计数
- 输入的方阵长宽是反的(想不到吧)
- 走一个标记一个,而且不用回溯,因为朝四个方向走,没个路口都能走完
- 自己的那块砖也算!!!ans初始值为1!!!
#include<iostream> #include<cmath> #define N 21 using namespace std; int m,n; char a[N][N]; bool b[N][N]; int ans=0; int xx,yy; void dfs(int x,int y){ if (x<1||x>m||y<1||y>n||a[x][y]=='#'|b[x][y]==false) return; b[x][y]=false; ans++; dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1); } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; b[i][j]=true; if(a[i][j]=='@'){ xx=i; yy=j; } } } dfs(xx,yy); cout<<ans; }
 
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号