Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- enum Direction {
- START,
- UP,
- DOWN,
- LEFT,
- RIGHT
- };
- using MapData = std::vector<std::vector<int>>;
- MapData gMapData =
- {
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
- };
- void A(int x, int y);
- void B(int x, int y, int start, Direction dir);
- int main()
- {
- A(5, 5);
- for (size_t i = 0; i < gMapData.size(); i++)
- {
- for (size_t j = 0; j < gMapData.size(); j++)
- {
- std::cout << gMapData[i][j] << ',';
- }
- std::cout << std::endl;
- }
- return 0;
- }
- void A(int x, int y)
- {
- B(x, y, 0, START);
- }
- void B(int x, int y, int move, Direction dir)
- {
- std::cout << move << std::endl;
- std::cout << "(" << x << "," << y << ")" << std::endl;
- gMapData[y][x] = move;
- move++;
- int up = y + 1;
- int down = y - 1;
- int left = x - 1;
- int right = x + 1;
- if (dir != UP && down >= 0 && gMapData[down][x] == -1)
- {
- B(x, down, move, dir == START ? DOWN : dir);
- }
- if (dir != DOWN && up < (int)gMapData.size() && gMapData[up][x] == -1)
- {
- B(x, up, move, dir == START ? UP : dir);
- }
- if (dir != RIGHT && left >= 0 && gMapData[y][left] == -1)
- {
- B(left, y, move, dir == START ? LEFT : dir);
- }
- if (dir != LEFT && right < (int)gMapData[0].size() && gMapData[y][right] == -1)
- {
- B(right, y, move, dir == START ? RIGHT : dir);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement