C++八皇后问题代码

cpp 复制代码
#include <iostream>
#include <cmath>
using namespace std;

// 判断能否放置皇后
bool canPlace(int q[], int n, int i) {
    for (int j = 0; j < n; j++) {
        // 判断是否在同一行或同一列
        if (q[j] == i || abs(q[j] - i) == abs(j - n)) {
            return false;
        }
    }
    return true;
}

// 解决八皇后问题
void solve(int q[], int n, int& count) {
    if (n == 8) {
        count++;
        // 输出解决方案
        cout << "Solution " << count << ":" << endl;
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 8; j++) {
                if (q[i] == j) {
                    cout << "Q ";
                } else {
                    cout << ". ";
                }
            }
            cout << endl;
        }
        cout << endl;
        return;
    }
    for (int i = 0; i < 8; i++) {
        if (canPlace(q, n, i)) {
            q[n] = i;
            solve(q, n + 1, count);
        }
    }
}

int main() {
    int q[8] = {0};
    int count = 0;
    solve(q, 0, count);
    return 0;
}

运行:

cpp 复制代码
Solution 1:
Q . . . . . . . 
. . . Q . . . . 
. . . . . . Q . 
. . . . . . . Q 
. Q . . . . . . 
. . . . . Q . . 
. . Q . . . . . 
. . . . Q . . . 

Solution 2:
Q . . . . . . . 
. . . . Q . . . 
. . . . . . Q . 
. . . . . . . Q 
. . . Q . . . . 
. . . . . . . Q 
. Q . . . . . . 
. . . . . Q . . 
...

Solution 92:
. . . Q . . . . 
. . . . . . Q . 
Q . . . . . . . 
. . . . . . . Q 
. . . . Q . . . 
. Q . . . . . . 
. . . . . Q . . 
. . . . . . . Q 

使用回溯算法来解决八皇后问题。使用一个数组q来存储每个皇后的位置,尝试递归放置每个皇后,如果当前解决方案不可行,则回溯到上一个皇后位置并重新尝试。如果找到一个可行方案,则输出并继续尝试其他方案。

相关推荐
神仙别闹5 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
会周易的程序员5 小时前
5 节点边缘冗余方案(上):基于 aiRaft 的物联网高可用控制面设计
c++·分布式·物联网·raft·iot·共识
伞伞悦读6 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
有点。6 小时前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥7 小时前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸7 小时前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp8 小时前
KV Cache 解析
java·算法
liliangcsdn8 小时前
IVOL与偏度因子的对比测量分析
算法
qq_199886878 小时前
第6板块·第4节:构建系统与多文件项目
c++·人工智能·gpu算力
2601_966949659 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash