POJ 1979 Red and Black (简单dfs)

题目:

简单dfs,没什么好说的

代码:

#include <iostream>
using namespace std;
typedef long long ll;
#define INF 2147483647

int w,h;
char a[22][22];
int dir[4][2] = {-1,0,1,0,0,-1,0,1};
int ans = 0;

void dfs(int x,int y){
    if(x < 0 || x >= h || y < 0 || y >= w || a[x][y] == ‘#‘) return;
    ans++;
    a[x][y] = ‘#‘;
    for(int i = 0;i < 4; i++){
        dfs(x+dir[i][0],y+dir[i][1]);
    }
}

int main(){
    while(cin >> w >> h){
        if(w == 0 && h == 0) break;
        ans = 0;
        int sx,sy;
        for(int i = 0;i < h; i++){
            for(int j = 0;j < w; j++){
                cin >> a[i][j];
                if(a[i][j] == ‘@‘){
                    sx = i;sy = j;
                }
            }
        }
        dfs(sx,sy);
        cout << ans << endl;
    }
    return 0;
} 
时间: 2024-08-24 03:31:57

POJ 1979 Red and Black (简单dfs)的相关文章

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(dfs)

简单深搜 1 #include <cstdio> 2 int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; 3 char map[21][21]; 4 int n,m; 5 int result; 6 7 void DFS(int sx, int sy) 8 { 9 int tx,ty; 10 for(int k = 0; k < 4; ++k) 11 { 12 tx = sx + dir[k][0]; 13 ty = sy + dir[k][1];

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

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

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

《挑战》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

Red and Black(简单dfs)

Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12519    Accepted Submission(s): 7753 Problem Description There is a rectangular room, covered with square tiles. Each tile is color

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