标签:
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
解题思路:这是一个简单的DFS问题,就是一个m*n的矩形里面有多少块封闭的@区间,用深搜的方法即可
程序代码:
#include <cstdio> using namespace std; int c[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}}; char a[105][105]; int m,n,d; void dfs(int i,int j) { a[i][j]=‘*‘; for(int k=0;k<8;k++) { int x=i+c[k][0]; int y=j+c[k][1]; if(a[x][y]==‘@‘&&x>=0&&x<=m&&y>=0&&y<=n) dfs(x,y); } return ; } int main() { while(scanf("%d%d",&m,&n)==2&&m&&n) { d=0; int i,j; for( i=0;i<m;i++) scanf("%s",a[i]); for( i=0;i<m;i++) for( j=0;j<n;j++) if(a[i][j]==‘@‘) { d++; dfs(i,j); } printf("%d\n",d); } return 0; }
标签:
原文地址:http://www.cnblogs.com/www-cnxcy-com/p/4690333.html