终于碰见一道原题了,这是在书上看到八连通的例子啊,哈哈,做了前面几个题目,这道题只是稍微在前面的基础上改了几个字母而已,我也可以说它是水题了,嘿嘿,加油,让更多的题目成为水题
#include<stdio.h> #include<stdlib.h> #include<string.h> char a[105][105]; int step[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1}; void dfs(int x,int y) { a[x][y]='*'; for(int i=0;i<8;i++) { int p=x+step[i][0]; int q=y+step[i][1]; if(a[p][q]=='W') { dfs(p,q); } } } int main() { int m,n,i,j,x; scanf("%d%d",&m,&n); x=0; 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]=='W') { dfs(i,j); x++; } } printf("%d",x); }