POJ 2816:紅與黑

#include <bits/stdc++.h>
using namespace std;
char maze[25][25];
int visited[25][25];
int area = 0;
int W, H;
int sr, sc;
void DFS(int r, int c);
int main()
{
	while(true){
//		cin >> W >> H;
		scanf("%d%d", &W, &H);
		getchar();
//		getchar();
		if(W == 0 && H == 0) break;
		memset(visited, 0, sizeof(visited));
		area = 0;
		int i, j;
		for(i = 1; i <= H; i++){
			for(j = 1; j <= W; j++){
				scanf("%c", &maze[i][j]);
//				cin >> maze[i][j];				
				
//				cout << "maze[" << i << "][" << j << "]: " << maze[i][j] << endl;  
				
				
				if(maze[i][j] == '@'){
					sr = i;
					sc = j;
				}
			}
			getchar();
//			getchar();
		}
		
		DFS(sr, sc);
		
		printf("%d\n", area);
	}
	
	return 0;
}
void DFS(int r, int c)
{
	if(r <= 0 || c <= 0 || r > H || c > W) return;
	if(maze[r][c] == '#' || visited[r][c]) return;
	area++;
	visited[r][c] = 1;
	DFS(r + 1, c);
	DFS(r - 1, c);
	DFS(r, c + 1);
	DFS(r, c - 1);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章