第一次DFS尝试
曾经一度惧怕DFS,不敢做题,也没有毅力去努力钻研。感谢我的同学们,他们让我有了尝试的勇气。
这是我做的第一道DFS题目,非常简单,和大家分享一下
http://acmore.net:8080/contest/view.action?cid=6#problem/E
#include<stdio.h> int n,m,i,k,count; char a[100][100]; void dfs(int x,int y)//把与一个“@”相连的“@”全部找到并标记 { if(a[x][y]=='*'||x<0||y<0||x==n||y==m)return; a[x][y]='*'; dfs(x-1,y-1); dfs(x-1,y); dfs(x-1,y+1); dfs(x,y-1); dfs(x,y+1); dfs(x+1,y-1); dfs(x+1,y); dfs(x+1,y+1); //putchar('N'); } int main() { while(~scanf("%d%d%*c",&n,&m)&&n&&m) { count=0; for(i=0;i<n;i++) gets(a[i]); for(i=0;i<n;i++) for(k=0;k<m;k++) { if(a[i][k]=='@') { dfs(i,k); count++; } } printf("%d\n",count); } return 0; }
使用油区非油化的思想,可以减少一个数组的使用,使代码简洁。
posted on 2013-03-29 19:45 plank george 阅读(108) 评论(0) 编辑 收藏 举报