Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
看明白其实很容易,求周长竟然这样算的!!/* 对图中的#点看它4周有几个"." 就加上几个,在用dfs搜索就能求出周长 */ #include"iostream" using namespace std; char map[30][30]; int path[30][30]; int num; int r,c; int dfs(int x,int y) { if(map[x][y]=='.'||path[x][y]==1) return 1; path[x][y]=1; if(map[x+1][y]=='.') num++; if(map[x-1][y]=='.') num++; if(map[x][y-1]=='.') num++; if(map[x][y+1]=='.') num++; dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1); dfs(x+1,y-1); dfs(x+1,y+1); dfs(x-1,y-1); dfs(x-1,y+1); return num; } int main() { int x,y; while(cin>>r>>c>>x>>y) { memset(map,'.',sizeof(map)); memset(path,0,sizeof(path)); if(r==0&&c==0&&x==0&&y==0) break; for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin>>map[i][j]; num=0; dfs(x,y); cout<<num<<endl; } return 1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator