本文整理汇总了C++中Puzzle::nextSlot方法的典型用法代码示例。如果您正苦于以下问题:C++ Puzzle::nextSlot方法的具体用法?C++ Puzzle::nextSlot怎么用?C++ Puzzle::nextSlot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Puzzle
的用法示例。
在下文中一共展示了Puzzle::nextSlot方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[]) {
// timer
struct timeval start, end;
long mtime, seconds, useconds;
gettimeofday(&start, NULL);
time_t startTime = time(0);
if (argc != 3) {
printf("wrong number of inputs\n");
exit(1);
}
int** grid = fileTo2dArray(argv[1], atoi(argv[2]));
Puzzle p = Puzzle(grid, atoi(argv[2]));
p.initialize();
/*
p->printGridDim();
p->printGrid();
p->printPreassigned();
p->printInitCandidates();
printf("start: %i, %i\n", p->getCurrentRow(), p->getCurrentCol());
while (p->nextSlot()) {
printf("nextslot: row is %i, col is %i\n", p->getCurrentRow(), p->getCurrentCol());
}
while (p->prevSlot()) {
printf("prevslot: row is %i, col is %i\n", p->getCurrentRow(), p->getCurrentCol());
}
printf("TEST: check candidates\n");
p->checkCandidates(p->getCurrentRow(), p->getCurrentCol());
printf("TEST: assign\n");
p->assign(p->getCurrentRow(), p->getCurrentCol());
printf("TEST: update neighbors\n");
p->updateNeighborConflicts(p->getCurrentRow(), p->getCurrentCol(), p->getCurrentAssigned(0, 0), true);
printf("TEST: check neighbors\n");
p->checkNeighborCandidates(p->getCurrentRow(), p->getCurrentCol());
*/
//int counter=10000;
while (!p.isSolved()) {
//while (!p->isSolved() && counter>0) {
//counter--;
if (testLevel > 0) printf("step 1: on (%i, %i)\n", p.getCurrentRow(), p.getCurrentCol());
//printf("step 1: current row %i, current col %i, %i\n", p->getCurrentRow(), p->getCurrentCol(), p->getCurrentAssigned(p->getCurrentRow(), p->getCurrentCol()));
bool hasCandidate = p.checkCandidates(p.getCurrentRow(), p.getCurrentCol(), false);
//printf("step 1\n");
// step 1
if (hasCandidate) {
//printf("step 3\n");
// step 3
bool succeeded;
if (p.assign(p.getCurrentRow(), p.getCurrentCol())) {
if (testLevel > 0)
printf("step 3: on (%i, %i), assigned %i\n", p.getCurrentRow(), p.getCurrentCol(), p.getCurrentAssigned(p.getCurrentRow(), p.getCurrentCol()));
//printf("step 3: assignment succeeded\n");
//printf("calling updateNeighborConflicts with %i, %i, %i\n", p->getCurrentRow(), p->getCurrentCol(), p->getCurrentAssigned(p->getCurrentRow(), p->getCurrentCol()));
//printf("pre-assign candidate list: \n");
//p->printInitCandidates();
// deprecated
//p->updateNeighborConflicts(p->getCurrentRow(), p->getCurrentCol(), p->getCurrentAssigned(p->getCurrentRow(), p->getCurrentCol()), true);
//printf("post-assign candidate list: \n");
//p->printInitCandidates();
//printf("step 3: updateNeighborConflicts succeeded\n");
succeeded = p.checkNeighborAssignments(p.getCurrentRow(), p.getCurrentCol());
}
else {
printf("error: reached slot with no candidates. shouldn't happen. exiting.\n");
exit(1);
}
if (succeeded) {
//printf("step 5\n");
// step 5
if (testLevel > 0) printf("step 5: next slot\n");
p.nextSlot();
p.copyCandidates(p.getCurrentRow(), p.getCurrentCol());
}
else {
//printf("step 4\n");
// step 4
if (testLevel > 0)
printf("step 4: on (%i, %i), unassigning %i\n", p.getCurrentRow(), p.getCurrentCol(), p.getCurrentAssigned(p.getCurrentRow(), p.getCurrentCol()));
//printf("pre-update candidate list: \n");
//p.printInitCandidates();
//deprecated
//p->updateNeighborConflicts(p->getCurrentRow(), p->getCurrentCol(), p->getCurrentAssigned(p->getCurrentRow(), p->getCurrentCol()), false);
//printf("post-update candidate list: \n");
//p->printInitCandidates();
p.removeAndInvalidate(p.getCurrentRow(), p.getCurrentCol());
// loops back to front
}
}
else {
//printf("step 2\n");
// step 2
//.........这里部分代码省略.........