hdu 1241 Oil Deposits
非递归 # include<iostream> # include<string> using namespace std; string map[100]; int mark[100][100]; struct oil { int x; int y; }; int dir[8][2]={0,-1,0,1,-1,0,1,0,1,1,1,-1,-1,1,-1,-1}; oil arr[10000]; int main() { int m,n; int x,y,a,b; while (cin>>m>>n&&m) { for ( int k=0;k<m;k++) cin>>map[k]; int num=0; memset(mark,0, sizeof (mark)); for ( int i=0;i<m;i++) for ( int j=0;j<n;j++) { if (map[i][j]== '@' &&mark[i][j]==0) { arr[0].x=j;arr[0].y=i; mark[i][j]=1; a=b=0; while (a<=b) { for ( int d=0;d<8;d++) { x=arr[a].x+dir[d][0]; y=arr[a].y+dir[d][1]; if (x>=0&&x<n&&y>=0&&y<m&&map[y][x]== '@' &&mark[y][x]==0) { b++; mark[y][x]=1; arr[b].x=x; arr[b].y=y; } } a++; } num++; } } cout<<num<<endl; } |
献给亲爱的班长同学 !!~(阮同学)初学者 传说中的勘探油田(DFS) Problem : 1241 ( Oil Deposits ) Judge Status : Accepted RunId : 3708968 Language : C++ Author : zjut11018 Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta #include<stdio.h> #include<iostream> #include<cstring> using namespace std; char map[100][100]; int dir[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1},vis[100][100]; int n,m,ans; void DFS( int i, int j) { vis[i][j]=1; for ( int k=0;k<8;k++) { int x=i+dir[k][0]; int y=j+dir[k][1]; if (x>=0&&x<n&&y>=0&&y<m&&!vis[x][y]&&map[x][y]== '@' ) { DFS(x,y); } } return ; } int main() { while (cin>>n>>m) { if (!n&&!m) break ; for ( int i=0;i<n;i++) scanf ( "%s" ,&map[i]); ans=0; memset (vis,0, sizeof (vis)); for ( int i=0;i<n;i++) for ( int j=0;j<m;j++) if (!vis[i][j]&&map[i][j]== '@' ) { ans++; DFS(i,j); } printf ( "%d\n" ,ans); } } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步