标签:
这是一道比较水的DPS的题目
题意就是求你可以走到的黑色的地板砖的块数,@代表你的起点,也是黑色的地板砖,#代表白色的,则说明你不能走,这就是一个广搜的题目
思路也很简单,如果你周围的那块地板是黑色的,而且之前没有走过,那就可以往那个地板砖走。
还有这道题的那个初始化很重要,不然很可能会WA。
1 #include <stdio.h> 2 #include <iostream> 3 #include <string.h> 4 5 using namespace std; 6 7 int ans; 8 bool mark[21][21]; 9 char str_1[21][21]; 10 void dfs(int m,int n) 11 { 12 if(str_1[m+1][n]==‘.‘&&mark[m+1][n]){mark[m+1][n]=false;ans++;dfs(m+1,n);} 13 if(str_1[m][n+1]==‘.‘&&mark[m][n+1]){mark[m][n+1]=false;ans++;dfs(m,n+1);} 14 if(str_1[m-1][n]==‘.‘&&mark[m-1][n]){mark[m-1][n]=false;ans++;dfs(m-1,n);} 15 if(str_1[m][n-1]==‘.‘&&mark[m][n-1]){mark[m][n-1]=false;ans++;dfs(m,n-1);} 16 } 17 18 int main() 19 { 20 int m,n; 21 while(scanf("%d%d",&m,&n),m!=0&&n!=0) 22 { 23 for(int i=1;i<=n;i++) 24 scanf("%s",str_1[i]); 25 memset(mark,true,sizeof(mark)); 26 ans=1; 27 for(int i=1;i<=n;i++) 28 for(int j=0;j<m;j++) 29 if(str_1[i][j]==‘@‘) dfs(i,j); 30 printf("%d\n",ans); 31 memset(str_1,0,sizeof(str_1)); 32 } 33 return 0; 34 }
标签:
原文地址:http://www.cnblogs.com/Tree-dream/p/5392687.html