回溯法经典—n-皇后问题

n-皇后问题是回溯法中经典中的经典,其基本问题描述是:在一个nxn的格子中放n个皇后,使得每个皇后不能相互攻击,任意两个皇后能够互相攻击的条件是他们在同一条对角线或者同一行或者同一列上

问题可以转换为从第0行开始放置皇后一直放到n-1行,使得每一行在放置皇后的同时,不能与前面的皇后相互攻击

即列,对角线不冲突即可(行肯定不冲突)

伪代码描述

search(cur) { //表示开始放置第cur个皇后,当然行数为cur,放置皇后的时候主要是确定cur的列
1.如果所有皇后都放置完毕,则打印出来
2.尝试将第cur个皇后放在第j列(0<=j<=n-1),如果放在某一列j使得该位置与前面cur-1个皇后不冲突,那么这个位置是合理的
  可以将其放在该位置,并且在这种放置方案下继续放置第cur+1个皇后
}


c++代码描述

#include <iostream>
using namespace std;

void search(int cur, int c[], int n) {
  if (cur == n) {
    for
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值