C/C++:八皇后(三)

2013-04-24 12:14:23 · 作者: · 浏览: 1218

 

  }

  // 检columnx列

  for (j = 0; j < 8; j++) {

  if (array[j][column] != 0) {

  return false;

  }

  }

  // 检查对角向左上

  i = row;

  j = column;

  while (i >= 0 && j >= 0) {

  if (array[i][j] != 0) {

  return false;

  }

  i--;

  j--;

  }

  // 检查对角向右上

  i = row;

  j = column;

  while (i >= 0 && j < 8) {

  if (array[i][j] != 0) {

  return false;

  }

  i--;

  j++;

  }

  // 检查对角向左下

  i = row;

  j = column;

  while (i < 8 && j >= 0) {

  if (array[i][j] != 0) {

  return false;

  }

  i++;

  j--;

  }

  // 检查对角向右下

  i = row;

  j = column;

  while (i < 8 && j < 8) {

  if (array[i][j] != 0) {

  return false;

  }

  i++;

  j++;

  }

  return true;

  }

  bool isResult(int** array) {

  int size = 0; // 皇后个数

  // 统计皇后个数

  for (int i = 0; i < 8; i++) {

  for (int j = 0; j < 8; j++) {

  if (array[i][j] != 0) {

  size++;

  }

  }

  }

  // 没有8个皇后,说明不是结果

  // 有8个皇后,因为每个皇后的放置都是在合法位置, 所以只需要简单的计算皇后个数就知道是不是结果.

  if (size != 8) {

  return false;

  }

  return true;

  }