首页 > 其他分享 >回溯法解n皇后问题

回溯法解n皇后问题

时间:2023-05-01 22:13:34浏览次数:33  
标签:arr int ++ backTracking 回溯 皇后 col 法解 row

#include <iostream>
using namespace std;
#define MAX 21
int arr[MAX]; //arr[i]=k,表示在第i行的第k个位置放置一个皇后
int sum;//计数解的个数
int n;//记录几行几列

bool cmp(int row, int col) {//当前行和列
    for (int i = 1; i < row; i++) {
        if(col == arr[i] || abs(row-i) != abs(col - arr[i]))
            return false;
    }
    return true;
}
void backTracking(int row) {
    if (row == n) {
        sum++; //找到了一个解
    }
    else {
        for (int i = 1; i < n; i++) {//从第一列到最后一列
            if (cmp(row, i)) {
                arr[row] = i; //记录
                backTracking(row + 1); //遍历下一行
            }
            arr[row] = 0;
        }
    }
}

int main() {
    cin >> n;
    backTracking(1);
    cout << sum <<endl;
    system("pause");
    return 0;
}

 

标签:arr,int,++,backTracking,回溯,皇后,col,法解,row
From: https://www.cnblogs.com/Jocelynn/p/17367085.html

相关文章

  • 回溯法解工作分配问题
    #include<iostream>usingnamespacestd;inta[100][100],sum=0,minn=2147483647,i,j,n;intb[100];voiddfs(intdep){intr;for(r=1;r<=n;++r)//dep表示第几个人,r表示工作if(!b[r])//如果第r件工作没有被选择{......
  • 分支限界法解01背包问题
    #include<iostream>usingnamespacestd;#defineMAX100structNode{intisVisit;//记录节点是否被扩展doublew;doublev;intlevel;//记录节点所在的层次doubleub;//上界Node*parent;//父节点};doublemaxValue=0;Node*PT[MAX......
  • 分支限界法解TSP问题
    #include<iostream>#include<queue>#defineINF1e7#defineMAX100usingnamespacestd;intm[MAX][MAX];//存储城市间的代价intbestPath[MAX];//存储最优路径intbestCost=1e7;//存储最小代价intcityNumber;//城市数目//排列树的节点定义structNode{......
  • 皇后游戏 题解
    luoguP2123题目描述皇后有\(n\)位大臣,每位大臣的左右手上面分别写上了一个正整数。恰逢国庆节来临,皇后决定为\(n\)位大臣颁发奖金,其中第\(i\)位大臣所获得的奖金数目为第\(i-1\)位大臣所获得奖金数目与前\(i\)位大臣左手上的数的和的较大值再加上第\(i\)位大臣右手......
  • 回溯 78.子集 200. 岛屿数量
    回溯算法为什么for循环嵌套很难解决解决问题当问题需要"回头",以此来查找出所有的解的时候排列组合切割(切割字符串)子集把子集列出来棋盘 N皇后/解数独是什么只要有递归,就有回溯也是一种纯暴力搜索算法可以抽象成一个树形结构递归函数没有返回值(ba......
  • 回溯算法:剑指 Offer 38. 字符串的排列
    题目描述:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制:1<=s的长度<=8  classSolution{Set<String>res=newHashSet<>();publicString[]permutation(Strings){b......
  • SpringBoot+Mybatis这个bug估计连作为神仙的您也无法解决--》Invalid bound statement
    最近开发一个调查单的应用系统,加班加点为了解决几个bug,但是最近两天卡在一个bug上。作为一头牛,不能轻易放弃,向困难挑战是牛的精神。1、Invalidbound问题展示首先,我针对题型QuestionType功能,写了五个子功能:增加题型,删除题型,修改题型,查询单条题型,模糊查询多条记录;还写了问题、调查......
  • 类似于八皇后的国际跳棋问题
    题目描述检查一个如下的6x6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列246135来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号123456列号2461......
  • admin项目公共方法解析
    前言:项目中公用的一些方法,配置,常量等正文:文件:common/inc.go packagecommonconstTimeTem="2006-01-0215:04:05"constAdminSecret="jO4s4QcGs4B8brP2"//随机秘钥//定义一个统一的返回对象typeReDatastruct{StatusboolMsgstringData......
  • 【230417-1】三种方法解方程:(x-2017)(x-2021)=12
    ......