hdu 2952
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2952
题意:找分开的#最多的片数
mark:dfs.同1312一样。
代码:
#include <stdio.h> char a[110][110]; int h,w; void ss(int x, int y) { int tab[4][2] = {0,1,0,-1,-1,0,1,0}; int i,xx,yy; a[x][y] = '1'; for(i = 0; i < 4; i++) { xx = x+tab[i][0]; yy = y+tab[i][1]; if(xx < 0 || xx >= h) continue; if(yy < 0 || yy >= w) continue; if(a[xx][yy] != '#') continue; ss(xx, yy); } } int main() { int t,sum; int i,j,k; scanf("%d", &t); while(t-- && scanf("%d%d", &h, &w)) { for(i = 0; i < h; i++) scanf("%s", a[i]); for(i = sum = 0; i < h; i++) for(j = 0; j < w; j++) if(a[i][j] == '#') {sum++; ss(i, j);} printf("%d\n", sum); } return 0; }