题解
【入门】红与黑
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; char a[105][105]; int n,m,c,fx[10]={0,0,1,0,-1},fy[10]={0,1,0,-1,0}; void f(int x,int y){ // 边界合法 且 是未走过的黑瓷砖 . if(y<=m&&x<=n&&y>=1&&x>=1&&a[x][y]=='.'){ c++; a[x][y]='#'; f(x,y+1); f(x+1,y); f(x,y-1); f(x-1,y); } } int main(){ c = 0; cin>>m>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='@'){ c++; a[i][j]='#'; // 不调用 f(i,j),改为 四个方向逐个递归 f(i,j+1); f(i+1,j); f(i,j-1); f(i-1,j); } } } cout<<c; return 0; }
- 1