Существует несколько проблем с кодом при его отображении.
Одна проблема заключается в том, что помещение данных в контейнер означает, что их необходимо либо переместить, либо скопировать.И массивы нельзя ни перемещать, ни копировать.
Другая проблема заключается в том, что, например,
bool DFID(int[3][3]);
равно
bool DFID(int(*)[3]);
То есть аргумент является указатель , а не массив.Указатели и массивы различны.
Один из возможных способов решения ваших проблем (оба) - использовать другой стандартный контейнер, например std::array
:
std::array<std::array<int, n>, n> goal;
std::list<std::array<std::array<int, n>, n>> open;
Вы можете упростить тип с помощью псевдонима типа:
using matrix_type = std::array<std::array<int, n>, n>;
matrix_type goal;
std::list<matrix_type> open;