POJ 1979 Red and Black

http://poj.org/problem?id=1979

方法和Lake Counting 完全一样

 1 #include <iostream>
 2 #include <stdio.h>
 3
 4 using namespace std;
 5 //思路与Lake counting 完全一样
 6 const int maxsize = 128;
 7 int M,N,cnt;
 8 char room[maxsize][maxsize];
 9 int d[2][4] = {{-1, 0, 1, 0}, {0, 1, 0, -1}};
10
11 bool check(int x, int y)
12 {
13     if (x < 0 || x >= N || y < 0 || y >= M) return false;
14     if (room[x][y] == ‘#‘) return false;
15     return true;
16 }
17
18 void dfs(int x, int y)
19 {
20     int nx, ny;
21     room[x][y] = ‘#‘;//将这个格置为#
22     for (int i = 0; i < 4; i++)
23     {
24         nx = x + d[0][i];
25         ny = y + d[1][i];
26         if (check(nx, ny))
27         {
28             cnt++;
29             dfs(nx, ny);
30         }
31     }
32 }
33
34 int main()
35 {
36     int x,y;
37     freopen("in.txt", "r", stdin);
38     while(~scanf("%d%d", &M, &N))
39     {
40         if (M == 0 && N == 0) break;
41         for (int i = 0; i < N; i++)
42         {
43             getchar();
44             for (int j = 0; j < M; j++)
45             {
46                 scanf("%c", &room[i][j]);
47                 if (room[i][j] == ‘@‘)
48                 {
49                     x = i;
50                     y = j;
51                 }
52             }
53         }
54         cnt = 1;
55         dfs(x, y);
56         printf("%d\n", cnt );
57     }
58     return 0;
59 }
时间: 2024-10-01 07:57:18

POJ 1979 Red and Black的相关文章

POJ 1979 Red and Black (红与黑)

POJ 1979 Red and Black (红与黑) Time Limit: 1000MS    Memory Limit: 30000K Description 题目描述 There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to

POJ 1979 Red and Black 深度优先搜索上手题

Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21738   Accepted: 11656 Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a

POJ 1979 Red and Black【深度优先搜索】

题目链接:http://poj.org/problem?id=1979 题目大意:一个矩形的房间地板被分为w*h个小块,每一个小块不是红的就是黑的,你首先站在一个黑色小块上,你只能朝你的四个方向(上下左右)移动,且不能到达红色的小块上,问你最多能到达多少个小块. 很简单的dfs深度优先搜索 没搜索过一个格子,将该格子设置为红色,之后的搜索就不会再搜索到该格子,就不会造成重复,因为该题有很多数据,记得每次处理数据是初始化各数组及其他数据. 代码如下: #include <iostream> #i

《挑战》2.1 POJ POJ 1979 Red and Black (简单的DFS)

B - Red and Black Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1979 Description There is a rectangular room, covered with square tiles. Each tile is col

POJ 1979 Red and Black dfs 难度:0

http://poj.org/problem?id=1979 #include <cstdio> #include <cstring> using namespace std; const int maxn = 21; bool vis[maxn][maxn]; char maz[maxn][maxn]; int n,m; const int dx[4] = {1,-1,0,0}; const int dy[4] = {0,0,1,-1}; int ans; bool in(int

POJ 1979 Red and Black(简单DFS)

Red and Black Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he

poj 1979 Red and Black(dfs水题)

Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he can move only

POJ 1979 Red and Black (深搜)

Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 23095   Accepted: 12467 Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a

POJ 1979 Red and Black (DFS)

Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 23904   Accepted: 12927 Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a