统计W 块 |
Time Limit: 1 Seconds Memory Limit: 32768 K Total Submit:89 Accepted:38 |
Description 给你一个N行M列矩形,矩形中只含’.’和’W’,要你统计含有多少个’W’的块。一个W与其相邻的八个方向上的W同属于一个块。 Input 第一行 N,M (1 <= N <= 100; 1 <= M <= 100) Output 只有一行,矩形中含有的W块的个数。 Sample Input 10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
Sample Output 3 |
简单的搜索题
Source: #include<iostream> using namespace std; int n,m,c,d; char a[100][100]; bool find(int i,int j) { for(c=i;c<n;c++) for(d=j;d<m;d++) if(a[c][d]=='W') { return true; break; } return false; } void doit(int i,int j) { if(i>=0&&i<n&&j>=0&&j<m&&(a[i][j]=='W')) { a[i][j]='.'; doit(i+1,j); doit(i+1,j+1); doit(i+1,j-1); doit(i-1,j+1); doit(i-1,j-1); doit(i-1,j); doit(i,j+1); doit(i,j-1); } } int main() { int i,j,sum; cin>>n>>m; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[i][j]; sum=0; while(find(0,0)) { doit(c,d); sum++; } cout<<sum<<endl; return 0; }
|