首页 > 代码库 > (DFS)hdoj1312-Red and Black
(DFS)hdoj1312-Red and Black
题目链接
非常简单的DFS,初学DFS做这道题很合适。需要注意的是题目中输入的行和列顺序是颠倒的。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int m,n,cnt,dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}}; 5 char a[22][22]; 6 void dfs(int si,int sj) 7 { 8 a[si][sj]=‘#‘; 9 cnt++; 10 int sx,sy; 11 for(int i=0;i<4;i++) 12 { 13 sx=si+dir[i][0]; 14 sy=sj+dir[i][1]; 15 if(sx<0||sx>=m||sy<0||sy>=n||a[sx][sy]==‘#‘) 16 continue; 17 else 18 dfs(sx,sy); 19 } 20 } 21 int main() 22 { 23 while(scanf("%d%d",&n,&m)) 24 { 25 if(m==0&&n==0) 26 break; 27 int si,sj,i,j; 28 cnt=0; 29 for(i=0;i<m;i++) 30 scanf("%s",a[i]); 31 for(i=0;i<m;i++) 32 for(j=0;j<n;j++) 33 if(a[i][j]==‘@‘) 34 { 35 si=i;sj=j; 36 } 37 dfs(si,sj); 38 printf("%d\n",cnt); 39 } 40 return 0; 41 }
(DFS)hdoj1312-Red and Black
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。