Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

第一次做搜索 帖下码吧

Posted by xubenben at 2011-07-25 15:57:26 on Problem 1979
#include <iostream>
#include <cstdlib>

using namespace std;

int map[22][22];

struct POS {
    int x, y;

};
POS pos;
int h, w;
int step;

int mov[4][2] = {
    {-1, 0},
    {1, 0},
    {0, 1},
    {0, -1}
};

void dfs(POS now) {
    map[now.x][now.y] = 1;
    for (int i = 0; i < 4; ++i) {
        int tx = now.x + mov[i][0];
        int ty = now.y + mov[i][1];

        if (tx >= 0 && tx < w && ty >= 0 && ty < h && map[tx][ty] == 0) {
            POS tmp;
            tmp.x = tx;
            tmp.y = ty;
            step++;
            dfs(tmp);
        }
    }
}

int main(int argc, char** argv) {
    while (scanf("%d%d", &w, &h) == 2) {
        step = 1;
        if (w == 0 && h == 0)break;
        getchar();
        for (int i = 0; i < h; ++i) {
            for (int j = 0; j < w; ++j) {
                char c;
                cin >> c;
                if (c == '.')
                    map[j][i] = 0;

                else if (c == '#')map[j][i] = 1;
                else {
                    map[j][i] == 1;
                    pos.x = j;
                    pos.y = i;
                }
            }
            getchar();
        }
        dfs(pos);
        printf("%d\n", step);
    }
    return 0;
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator