A水题,找手感。
这一题也好简单,就是找一个区域内所有点的个数,边界有围墙,思路就是找到一个,就把它变成围墙,然后num+1,最后输出num,得到结果
话不多说,直接贴代码吧
#include <iostream> #include <string> using namespace std; char arr[25][25]; int m,n,num,dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; void dfs(int i,int j) { num++; for(int k=0;k<4;k++) { int i1=i+dir[k][0]; int j1=j+dir[k][1]; if(i1>=1&&i1<=m&&j1>=1&&j1<=n&&arr[i1][j1]=='.') { arr[i1][j1]='#';dfs(i1,j1); } } } int main() { int f1,f2; string text; while(cin>>n>>m&&m!=0&&n!=0) { num=0; for(int i=1;i<=m;i++) { cin>>text; for(int j=1;j<=n;j++) { arr[i][j]=text[j-1]; if(arr[i][j]=='@') { f1=i;f2=j; arr[i][j]='#'; } } } dfs(f1,f2); cout<<num<<endl; } return 0; }