题目大意:从@开始出发,“.”可走,“#”不可走,给出多组数据,“0 0”为结尾,求每组数据可以走到多少点(起点也算一个点)。
夏令营讲课的时候它的评价:
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 const int sz = 25; 6 char plat[sz][sz]; 7 int n, m, ans = 0; 8 int q[sz*sz][3]; 9 bool book[sz][sz]; 10 int dx[8] = {-1,0,1,0}, dy[8] = {0,1,0,-1}; 11 int bfs(int x,int y) { 12 int head = 1, tail = 1, mx, my; 13 q[head][1] = x, q[head][2] = y; 14 book[x][y] = 1; 15 while(head<=tail) { 16 for(int i = 0; i < 4; i++) { 17 mx = q[head][1] + dx[i]; 18 my = q[head][2] + dy[i]; 19 if(mx>=1&&my>=1&&mx<=m&&my<=n&&(plat[mx][my]!='#')&&(!book[mx][my])) { 20 tail++; 21 q[tail][1] = mx; 22 q[tail][2] = my; 23 book[mx][my] = 1; 24 } 25 } 26 head++; 27 } 28 ans = tail; 29 return ans; 30 } 31 int main() { 32 while(1) { 33 memset(book,0,sizeof(book)); 34 scanf("%d%d",&n,&m); 35 if(n==0&&m==0) break; 36 for(int i = 1; i <= m; i++) { 37 scanf("%s",plat[i]+1); 38 } 39 for(int i = 1; i <= m; i++) { 40 for(int j = 1; j <= n; j++) 41 { 42 // printf("%c",s[i][j]); 43 if(plat[i][j]=='@') { 44 printf("%d ",bfs(i,j)); 45 break; 46 } 47 } 48 } 49 } 50 return 0; 51 }
准备刷刷夏令营yhy讲课的搜索专题qwq
这是第一个stO Orz