回溯法 解决8皇后问题
回溯法 解决8皇后问题
大大美女女 发表于4年前
回溯法 解决8皇后问题
  • 发表于 4年前
  • 阅读 29
  • 收藏 0
  • 点赞 0
  • 评论 0
#include <stdio.h>
#include <math.h>
#include <iostream>

using namespace std;

const int kMaxSize = 10;

int x[kMaxSize] = {-1};

bool IsLegal(int k) {
  for (int i = 0; i < k; i++) {
    if (x[k]==x[i]||abs(k-i)==abs(x[k]-x[i])) {
      return false;
    }
  }
  return true;
}

int main(int argc, char* argv[]) {
  int k = 0;
  while (k >= 0) {
    x[k] = x[k] + 1;         
    while (x[k] < kMaxSize && !IsLegal(k)) {
      x[k] = x[k] + 1;
    }

    if (x[k] < kMaxSize && k == kMaxSize -1) {
      for (int i = 0; i < kMaxSize; i++) {
        cout << x[i];
      }
      cout << endl;
    } else if (x[k] < kMaxSize && k < kMaxSize) {
      k = k + 1;
    } else {
      x[k] = -1;
      k = k - 1;
    }
  }
}


有趣有爱有价值:http://www.qihu100.com


标签: 8皇后 回溯
共有 人打赏支持
粉丝 19
博文 60
码字总数 24479
×
大大美女女
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: