fix nqueens example

This commit is contained in:
lperron@google.com
2011-09-08 00:34:28 +00:00
parent 279bf4b803
commit 1c8a3db3b1

View File

@@ -172,6 +172,22 @@ class R270 : public NQueenSymmetry {
}
};
void CheckNumberOfSolutions(int size, int num_solutions) {
if (FLAGS_use_symmetry) {
if (size - 1 < kKnownUniqueSolutions) {
CHECK_EQ(num_solutions, kNumUniqueSolutions[size - 1]);
} else {
CHECK_GT(num_solutions, 0);
}
} else {
if (size - 1 < kKnownSolutions) {
CHECK_EQ(num_solutions, kNumSolutions[size - 1]);
} else {
CHECK_GT(num_solutions, 0);
}
}
}
void NQueens(int size) {
CHECK_GE(size, 1);
Solver s("nqueens");
@@ -224,6 +240,7 @@ void NQueens(int size) {
for (int loop = 0; loop < FLAGS_nb_loops; ++loop) {
s.Solve(db, monitors); // go!
CheckNumberOfSolutions(size, solution_counter->solution_count());
}
const int num_solutions = solution_counter->solution_count();
@@ -242,19 +259,6 @@ void NQueens(int size) {
}
printf("========= number of solutions:%d\n", num_solutions);
printf(" number of failures: %lld\n", s.failures());
if (FLAGS_use_symmetry) {
if (size - 1 < kKnownUniqueSolutions) {
CHECK_EQ(num_solutions, kNumUniqueSolutions[size - 1] * FLAGS_nb_loops);
} else {
CHECK_GT(num_solutions, 0);
}
} else {
if (size - 1 < kKnownSolutions) {
CHECK_EQ(num_solutions, kNumSolutions[size - 1] * FLAGS_nb_loops);
} else {
CHECK_GT(num_solutions, 0);
}
}
}
} // namespace operations_research