Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
class Maze { private: int rows, columns; std::vector
> mat; public: Maze(int _rows = 2, int _columns = 2) { rows = _rows; columns = _columns; mat.resize(rows); for(int i = 0; i < rows; i++) { mat.at(i).resize(columns); } for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) { mat.at(i).at(j) = '#'; } } } int get_rows() const { return rows; } int get_columns() const { return columns; } void set_value(int i, int j, char new_value) { mat.at(i).at(j) = new_value; } void print() { for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) { std::cout << mat.at(i).at(j) ; } std::cout << std::endl; } } char get_position(int i, int j) { return mat.at(i).at(j); } }; class RandomMaze { private: Maze maze; std::vector
> visited; std::vector
di{-1, 1, 0, 0}; std::vector
dj{0, 0, -1, 1}; public: RandomMaze(Maze _maze) { maze = _maze; visited.resize(maze.get_rows()); for(int j = 0; j < maze.get_rows(); j++) { visited.at(j).resize(maze.get_columns(), false); } } void generate_random_maze(int ii, int jj) { visited[ii][jj] = true; std::vector
> v; for(int i = 0; i < 4; i++) { int ti = di.at(i) + ii; int tj = dj.at(i) + jj; if(ti >= 0 and ti < maze.get_rows() and tj >= 0 and tj < maze.get_columns() and !visited.at(ti).at(tj)) { v.push_back(std::make_pair(ti, tj)); } } std::random_shuffle(v.begin(), v.end()); for(std::pair
p : v) { maze.set_value(p.first, p.second, '.'); generate_random_maze(p.first, p.second); } visited[ii][jj] = false; } Maze get_maze() { return maze; } }; int main(int argc, char *argv[]) { int seed = -1; int n, m; if(argc > 2) { n = atoi(argv[1]); m = atoi(argv[2]); } if(argc == 3) { seed = atoi(argv[3]); } if(seed == -1) { srand(time(0)); } else { srand(seed); } n = 5; m = 5; Maze maze(n, m); RandomMaze random_maze(maze); random_maze.generate_random_maze(0, 0); random_maze.get_maze().print(); return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)