43 void addRow(std::span<const int> col_indices,
int row_id);
49 void cover(
int col_idx);
62 std::optional<std::vector<int>>
search(
int expected_solution_size = 0);
91 void cover_impl(
Node* col);
92 void uncover_impl(
Node* col);
93 bool search_impl(std::vector<int>& solution);
98 Node* getColumn(
int idx)
const;
111 Node* chooseColumn()
const;
119 std::vector<Node*> columns;
120 std::stack<Node*> cover_stack;
bool isFullyUncovered() const
Проверяет, все ли столбцы раскрыты
Определения dancing_links_matrix.cpp:134
void addRow(std::span< const int > col_indices, int row_id)
Добавляет строку в матрицу
Определения dancing_links_matrix.cpp:80
std::optional< std::vector< int > > search(int expected_solution_size=0)
Поиск точного покрытия (алгоритм X).
Определения dancing_links_matrix.cpp:115
void cover(int col_idx)
Покрывает столбец и все конфликтующие с ним строки
Определения dancing_links_matrix.cpp:107
~DancingLinksMatrix()
Деструктор, освобождает всю память
Определения dancing_links_matrix.cpp:56
DancingLinksMatrix & operator=(const DancingLinksMatrix &)=delete
bool isCovered(int col_idx) const
Проверяет, покрыт ли столбец
Определения dancing_links_matrix.cpp:127
int countColumns() const
Возвращает количество столбцов в матрице
Определения dancing_links_matrix.cpp:138
DancingLinksMatrix(int num_columns)
Конструктор матрицы с заданным количеством столбцов
Определения dancing_links_matrix.cpp:35
void uncover(int col_idx)
Восстанавливает ранее покрытый столбец (LIFO порядок).
Определения dancing_links_matrix.cpp:111
DancingLinksMatrix(const DancingLinksMatrix &)=delete
Определения dancing_links_matrix.cpp:10