题目:https://vjudge.net/problem/HDU-1241#author=AlwaysInsistOn
分析:简单bfs,输入后对每一个找到的'@’进行广搜并计数,将广搜找到的'@'改为'*',最后输出即可。
代码:
1 #include <stdio.h> 2 #include <string.h> 3 int m,n; 4 char c[110][110]; 5 int ans; 6 int l[10100][2]; 7 int q[9]={0,-1,-1,0,1,1,1,0,-1}; 8 int p[9]={0,0,1,1,1,0,-1,-1,-1}; 9 int check(int x,int y){ 10 if(x>=0&&x<m&&y>=0&&y<n&&c[x][y]=='@')return 1; 11 else return 0; 12 } 13 void bfs(int x,int y){ 14 memset(l,0,sizeof(l)); 15 c[x][y]='*'; 16 int h=0,r=1; 17 l[h][0]=x; 18 l[h][1]=y; 19 while(h<r){ 20 int x1,y1; 21 for(int i=1;i<=8;i++){ 22 x1=l[h][0]+q[i]; 23 y1=l[h][1]+p[i]; 24 if(check(x1,y1)){ 25 l[r][0]=x1; 26 l[r][1]=y1; 27 r++; 28 c[x1][y1]='*'; 29 } 30 } 31 h++; 32 } 33 } 34 int main(void){ 35 while(scanf("%d",&m)==1&&m){ 36 scanf("%d",&n); 37 ans=0; 38 memset(c,'