标签:des style blog http color os io strong
http://poj.org/problem?id=1562
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 12595 | Accepted: 6868 |
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
题目大意:如果‘@‘周围的8个方向有‘@‘就认为它们是同一油田。求总油田的个数。
本题是dfs的入门题,我的dfs只能用很烂来形容,dfs利用了栈的思想,先进后出。
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #define N 1000001 using namespace std; int n,m; char map[101][101]; int v[101][101]; int jx[]={1,1,1,-1,-1,-1,0,0}; int jy[]={-1,0,1,-1,0,1,-1,1}; void dfs(int x,int y) { v[x][y]=1; int tx,ty; for(int i=0;i<8;i++) { tx=x+jx[i]; ty=y+jy[i]; if(tx>=0&&tx<n&&ty>=0&&ty<m&&map[tx][ty]==‘@‘&&v[tx][ty]==0) { dfs(tx,ty); } } } int main() { int ans=0; while(scanf("%d%d",&n,&m)!=EOF&&n!=0) { ans=0; for(int i=0;i<n;i++) { scanf("%*c%s",map[i]); } memset(v,0,sizeof(v)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(map[i][j]==‘@‘&&v[i][j]==0) { dfs(i,j); ans++; } } } printf("%d\n",ans); } return 0; }
Oil Deposits(poj 1526 DFS入门题),布布扣,bubuko.com
标签:des style blog http color os io strong
原文地址:http://www.cnblogs.com/zhangmingcheng/p/3916817.html