回溯和分支限界详解和实例(八皇后问题,哈密顿回路解析和代码)
发布日期:2021-05-07 09:28:38 浏览次数:41 分类:精选文章

本文共 928 字,大约阅读时间需要 3 分钟。

文章目录

回溯和分支限界解决的问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

回溯法的内涵

在这里插入图片描述

回溯法的一些实例

n皇后问题

在这里插入图片描述

在这里插入图片描述

这棵树实际上是对称的所以不用画后面的位于3 4 格开始的情况也可以得到其他解

伪代码如下

在这里插入图片描述
在这里插入图片描述

#include 
#include
#include
#include
int x[15]={ 0};int count=0;int PLACE(int k)//检测第k个皇后能否放进棋盘{ int i=1; while(i
0) { x[k]++; while(x[k]<=n&&!PLACE(k))//该列不符合,则放入下一列 x[k]++; if(x[k]<=n) { if(k==n) { count++; if(count==4) { printf("%d\n",count); break; } printf("%d %d %d %d %d %d\n",x[1],x[2],x[3],x[4],x[5],x[6]); } else//判断下一行 { k++; x[k]=0; } } else k--;//没找到,则回溯 } return ;}int main(){ int n; while(scanf("%d",&n)&&n!=0) { NQUEENS(n); count =0; } return 0;}

哈密顿回路问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

子集和数的问题

在这里插入图片描述

在这里插入图片描述

分支限界法

在这里插入图片描述

实例1:分配工作问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

上一篇:面试题积累之TCP传输链接管理(详解图解建立和释放链接三次握手和四次挥手)
下一篇:动态规划之背包问题

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月18日 06时58分18秒