当前位置: 首页 > news >正文

网站平台建设咨询合同成人英语培训

网站平台建设咨询合同,成人英语培训,西安公司网站建设哪家专业,广州微网站建设案例【算法学习】—n皇后问题(回溯法) 1. 什么是回溯法? 相信"迷宫"是许多人儿时的回忆,大家小时候一定都玩过迷宫游戏。我们从不用别人教,都知道走迷宫的策略是: 当遇到一个岔路口,会有以下两种情况&#xf…

【算法学习】—n皇后问题(回溯法)

1. 什么是回溯法?

相信"迷宫"是许多人儿时的回忆,大家小时候一定都玩过迷宫游戏。我们从不用别人教,都知道走迷宫的策略是:

当遇到一个岔路口,会有以下两种情况:

存在没走过的路。此时可以任意选一条没走过的路深入,只要记住我们所走过的路径即可。

倘若下次再来到这个路口,便不再沿着走过的路径继续深入,而是沿着没走过的路径深入下去;

所有路都已经走过。如果所有岔路口都已经遍历,则回退至上一个最近的岔路口。

当遇到死胡同,便回退到刚才距离最近的岔路口。

不断前进并重复该过程,直到找到终点或回退到起点位置。

其实,这就是回溯法:一个基于深度优先搜索和约束函数的问题求解方法。

(1)、n皇后问题

在这里插入图片描述

在这里插入图片描述

📢 非递归求解n皇后问题

#include <math.h>
#include <stdio.h>
#include <stdlib.h>#define N 4int q[N + 1]; // 存储皇后的列号int check(int j)
{ // 检查第i个皇后的位置是否合法int i;for (i = 1; i < j; i++){if (q[i] == q[j] || abs(i - j) == abs(q[i] - q[j])){ // 判断是否在同一斜线上return 0;}}return 1;
}void queen()
{ //int i;for (i = 1; i <= N; i++){q[i] = 0;}int answer = 0; // 方案数int j = 1;      // 表示正在摆放第j个皇后while (j >= 1){q[j] = q[j] + 1; // 让第j个皇后向后一列摆放while (q[j] <= N && !check(j)){                    // 判断第j个皇后的位置是否合法q[j] = q[j] + 1; // 不合法就往后一个位置摆放}if (q[j] <= N){ // 表示第j个皇后的找到一个合法的位置if (j == N){ // 找到了一组皇后的解answer = answer + 1;printf("放案%d:", answer);for (i = 1; i <= N; i++){printf("%d", q[i]);}printf("\n");}else{ // 继续摆放下一个皇后j = j + 1;}}else{ // 表示第j个皇后找不到一个合法的位置q[j] = 0;  // 还原第j个皇后的位置j = j - 1; // 回溯}}
}
int main()
{queen();return 0;
}

📢 递归求解n皇后问题

#include <math.h>
#include <stdio.h>
#include <stdlib.h>#define N 4int answer=0;int q[N + 1]; // 存储皇后的列号int check(int j)
{ // 检查第i个皇后的位置是否合法int i;for (i = 1; i < j; i++){if (q[i] == q[j] || abs(i - j) == abs(q[i] - q[j])){ // 判断是否在同一斜线上return 0;}}return 1;
}void queen(int j){int i;for(i=1;i<=N;i++){q[j]=i;
if(check(j)){// 当摆放的皇后位置为合法时if(j==N){//找到了N皇后的一组解answer=answer+1;printf("方案%d:",answer);for(i=1;i<=N;i++){printf("%d",q[i]);}printf("\n");}else{queen(j+1);//递归摆放下一个位置}
}}
}int main()
{queen(1);return 0;
}

在这里插入图片描述

http://www.hengruixuexiao.com/news/42744.html

相关文章:

  • 网站开发文档word百度云搜索资源入口
  • 可以自建网站吗宁波网站优化公司推荐
  • 网页制作的方法成都seo优化推广
  • 网站首页html代码的标签百度指数官网
  • 专业做网站团队seo实战培训视频
  • 如何做网站内容新闻头条 今天
  • 如何查找做网站的服务商国外b站推广网站
  • 网站网络安全怎么做商丘seo优化
  • 专业网站建设电话青岛网站建设有限公司
  • 网站建站平台java产品市场调研怎么做
  • 石家庄网站制作武汉网站制作企业有哪些
  • h5游戏网站谷歌网站推广优化
  • wordpress调用主站的文章网推平台
  • 建设银行香港官方网站网站排名top排行榜
  • 济宁建网站公司新闻头条免费下载安装
  • 在百度上做网站有用吗百度视频免费下载
  • 公司的服务器能建设网站吗seo网站自动推广
  • 如何访问英文网站佛山百度快照优化排名
  • 赣州网站建设效果郑州网络营销排名
  • 企业网站怎样做优化站长工具seo综合查询怎么用
  • 网站广告动图怎么做贵港网站seo
  • 成都网站建设行业分析谷歌seo站内优化
  • 嘉祥网站建设公司培训心得总结怎么写
  • 高级服装定制网站交换友情链接
  • office365做企业网站中小企业网站制作
  • python电商网站开发seo关键词优化排名推广
  • 广东营销网站建设服务推广软文营销案例
  • 求职网站怎么做全网热搜榜第一名
  • 技术支持 广州网站建设宁波免费seo在线优化
  • 二级学院网站建设报告b站视频怎么快速推广