文章

111

粉丝

69

获赞

180

访问

66.2k

头像
石油储藏 (dfs)题解:

#include<bits/stdc++.h>
using namespace std;

const int N = 110;
char g[N][N];
bool st[N][N];
int n, m, cnt;

void dfs(int x, int y)
{
	if(x < 0 || x >= n || y < 0 || y >= m || g[x][y] == '*' || st[x][y]) return ;
	
	cnt = 1;
	st[x][y] = true;
	
	dfs(x + 1, y);
    
    dfs(x, y + 1);
    
    dfs(x - 1, y);
    
    dfs(x, y - 1);
    
    dfs(x + 1, y - 1);

	dfs(x - 1, y - 1);
	
	dfs(x + 1, y + 1);

	dfs(x - 1, y + 1);

}

int main()
{
	while(cin >> n >> m)
	{
		if(n == 0 && m == 0) break;
		
		memset(st, 0, sizeof st);
		
		int res = 0;
		for(int i = 0; i < n; i ++)
			for(int j = 0; j < m; j ++)
				cin >> g[i][j];
				
		cnt = 0;		
		for(int i = 0; i < n; i ++)
		{
			for(int j = 0; j < m; j ++)
			{
				if(g[i][j] == '@' && !st[i][j])
				{
					dfs(i, j);
					res += cnt;
				}
			}
		}
		
		cout << res << endl;
	}
	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发