当前位置: 首页>>代码示例>>C++>>正文


C++ Puzzle::printInitCandidates方法代码示例

本文整理汇总了C++中Puzzle::printInitCandidates方法的典型用法代码示例。如果您正苦于以下问题:C++ Puzzle::printInitCandidates方法的具体用法?C++ Puzzle::printInitCandidates怎么用?C++ Puzzle::printInitCandidates使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Puzzle的用法示例。


在下文中一共展示了Puzzle::printInitCandidates方法的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 = new Puzzle(grid, atoi(argv[2]));
  p->initialize();

  int dim = atoi(argv[2]);

  if (dim<16) parallelStartDepth=86;

  int highestVisitedPosition = 0;
  int currentDepth = 0;
  int numTried = 0;
  std::vector<Puzzle*> toSolve;
  Puzzle* solved = NULL;

  while (!p->isSolved()) {

    if (testLevel > 1 && highestVisitedPosition < p->positionOnVisited) {
      if (testLevel > 1) printf("highestVisitedPosition is now %i\n", p->positionOnVisited);
      highestVisitedPosition = p->positionOnVisited;
    }
    // step 1
    if (currentDepth >= parallelStartDepth && checkCurrentCandidates(p)) {
      Puzzle* forSolving = p->makePreassignedCopy();

      if (testLevel > 1) {
        printf("making copy: old candidates are\n");
        p->printInitCandidates();
        printf("new candidates are\n");
        forSolving->printInitCandidates();
      }
      toSolve.push_back(forSolving);

      if (testLevel > 1) printf("toSolve size: %i\n", (int)toSolve.size());

      if (reverseSlot(p)) {
        currentDepth--;
        backtrack(p);
      }
      else {
        break;
      }

      if (toSolve.size() >= vectorSizeLimit) {
        if (testLevel > 1) printf("toSolve reached %i elements, attempting solve now\n", vectorSizeLimit);
        solved = solveInitializedPuzzles(&toSolve, highestVisitedPosition, &numTried);
        if (solved != NULL) {
          break;
        }
        else while (toSolve.size() > 0) {
          toSolve.pop_back();
        }
      }
    }
    else if (checkCurrentCandidates(p)) {
      // step 3
      bool succeeded = assignAndValidate(p);
      if (succeeded) {
        // step 5
        advanceSlot(p);
        currentDepth++;
      }
      else {
        // step 4
        backtrack(p);
      }
    }
    else {
      // step 2
      if (reverseSlot(p)) {
        currentDepth--;
        // step 4
        backtrack(p);
      }
      else {
        //printf("step 2 failed\n");
        break;
      }
    }
  }

  if (!p->isSolved()) {
    p->deinitialize();
    delete p;

    if (testLevel > 1) printf("number of branches: %i\n", (int)toSolve.size());

//.........这里部分代码省略.........
开发者ID:haotianwang,项目名称:cs194_proj,代码行数:101,代码来源:sudoku_solver_serial_unit_prop_threaded.cpp


注:本文中的Puzzle::printInitCandidates方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。