Oil Deposits
生活随笔
收集整理的這篇文章主要介紹了
Oil Deposits
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
hdu1241:http://acm.hdu.edu.cn/showproblem.php?pid=1241
題意:就是找出有多少塊有石油的區(qū)域,就是數(shù)組中的@,這邊相鄰指的是是周?chē)陌藗€(gè)位置。
題解:? dfs,從一塊油田的位子開(kāi)始,朝著與他相鄰的8個(gè)方向收索,遇到油田就把它變成不是油田,并往下繼續(xù)。遍歷一下,就知道有多少了
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 char map[102][102]; 7 int m,n; 8 void dfs(int i,int j){ 9 if(i<1||i>m||j<1||j>n) 10 return; 11 if(map[i-1][j]=='@') 12 { map[i-1][j]='*'; 13 dfs(i-1,j); 14 } 15 if(map[i+1][j]=='@') 16 { map[i+1][j]='*'; 17 dfs(i+1,j); 18 } 19 if(map[i][j+1]=='@') 20 { map[i][j+1]='*'; 21 dfs(i,j+1); 22 } 23 if(map[i][j-1]=='@') 24 { map[i][j-1]='*'; 25 dfs(i,j-1); 26 } 27 28 if(map[i+1][j+1]=='@') 29 { map[i+1][j+1]='*'; 30 dfs(i+1,j+1); 31 } 32 if(map[i-1][j+1]=='@') 33 { map[i-1][j+1]='*'; 34 dfs(i-1,j+1); 35 } 36 if(map[i-1][j-1]=='@') 37 { map[i-1][j-1]='*'; 38 dfs(i-1,j-1); 39 } 40 if(map[i+1][j-1]=='@') 41 { map[i+1][j-1]='*'; 42 dfs(i+1,j-1); 43 } 44 45 } 46 int main(){ 47 int count; 48 while(~(scanf("%d%d",&m,&n))&&m!=0){ 49 count=0; 50 memset(map,0,sizeof(map)); 51 for(int i=1;i<=m;i++) 52 for(int j=1;j<=n;j++){ 53 cin>>map[i][j]; 54 } 55 for(int i=1;i<=m;i++) 56 for(int j=1;j<=n;j++) 57 { if(map[i][j]=='@'){ 58 count++; 59 dfs(i,j); 60 } 61 } 62 printf("%d\n",count); 63 } 64 } View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/chujian123/p/3366547.html
總結(jié)
以上是生活随笔為你收集整理的Oil Deposits的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 百度地图动态显示查询结构
- 下一篇: BusinessEtiquette,Co