Like[5][5],1 表示喜歡。assign[5],使 Like[i][assign[i]] == 1 且所有書不重複。bool dfs(int person) {
if (person == 5) return true; // 全部分配完成
for (int book = 0; book < 5; ++book) {
if (!used[book] && Like[person][book]) {
used[book] = true;
assign[person] = book;
if (dfs(person + 1)) return true;
used[book] = false; // 回溯
}
}
return false;
}
A -> 2
B -> 0
C -> 1
D -> 3
E -> 4
驗證:每人獲得喜歡的書,書籍無衝突。
return true,收集方案。