#ifndef MYSOK_H #define MYSOK_H #include #include #include #include #define NBL 20 #define NBC 20 #define MAX_DEPTH 60 enum movement { MOVE_U = 0, MOVE_D, MOVE_L, MOVE_R, MOVE_W }; enum board_str { OUT = ' ', FREE = '_', TARGET = '.', WALL = '#', CRATE_ON_FREE = '$', CRATE_ON_TARGET = '*', MAN1_ON_FREE = '1', MAN1_ON_TARGET = 'u', MAN2_ON_FREE = '2', MAN2_ON_TARGET = 'd', END_OF_LINE = 'a' }; const std::string move_str[] = {"Up", "Down", "Left", "Right", "Wait"}; const int dx[] = {-1, 1, 0, 0, 0}; const int dy[] = {0, 0, -1, 1, 0}; const int dsize = 5; struct sok_board_t { int board[NBL][NBC]; int board_nbl; int man1_x; int man1_y; int man2_x; int man2_y; int num_crates_free; sok_board_t(); void print_board(); void load(char *_file); }; typedef struct { sok_board_t state; int path_len; std::string path; } Node; int bfs(Node &result); int dfs(Node &result, int depth, std::vector history); #endif