本文主要是介绍uva/6-12 572 - Oil Deposits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
油田
两个相邻则说明属于一个油田 则数目加加,又是一个递归,并不难
#include<cstdio> #include<cstring> const int maxn=1000+5; char tu[maxn][maxn]; //输入图的数组 int m,n,idx[maxn][maxn]; //标记数组void dfs(int r,int c,int id) {if(r<0||r>=m||c<0||c>=n)//去除出界的return;if(idx[r][c]>0||tu[r][c]!='@')//已经被标记 或者不是油田return;idx[r][c]=id;//将id存入for(int dr=-1; dr<=1; dr++) for(int dc=-1; dc<=1; dc++) // 寻找周围八块if(dr!=0||dc!=0) //不包括它自己dfs(r+dr,c+dc,id); //递归 } int main() {int i,j;while(scanf("%d%d",&m,&n)==2&&m&&n){for(i =0; i<m; i++)scanf("%s",tu[i]);memset(idx,0,sizeof(idx));int q=0;for(i=0; i<m; i++)for(j=0; j<n; j++)if(idx[i][j]==0&&tu[i][j]=='@')dfs(i,j,++q);printf("%d\n",q);}return 0; }
这篇关于uva/6-12 572 - Oil Deposits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!