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

餐饮网站建设方案书成人就业技术培训机构

餐饮网站建设方案书,成人就业技术培训机构,金泉网推广怎么样,模板展示网站源码1、问题描述 在棋盘上放置 8 个皇后,使得它们互不攻击,此时每个皇后的攻击范围为同行同列和同对角线,要求找出所有解,如下图所示。 左图为皇后的攻击范围,右图为一个可行解。 2、分析 最简单的思路是把问题转化为 “…

1、问题描述

在棋盘上放置 8 个皇后,使得它们互不攻击,此时每个皇后的攻击范围为同行同列和同对角线,要求找出所有解,如下图所示。

在这里插入图片描述
左图为皇后的攻击范围,右图为一个可行解。

2、分析

最简单的思路是把问题转化为 “从 64 个格子中选一个子集”,使得 “子集中恰好 8 个格子,且任意两个选出的格子都不在同一行、同一列或同一个对角线上”。这正是子集枚举问题。然而,64个格子的子集有264 个,太大了,这并不是一个很好的模型。

第二个思路是把问题转化为 “从 64 个格子中选 8 个格子”,这是组合生成问题。根据组合数学,有 C 64 8 = 4.426 × 1 0 9 C_{64}^8 = 4.426 \times 10^9 C648=4.426×109 种方案,比第一种方案优秀,但仍然不够好。

经过思考,不难发现以下事实:恰好每行每列各放置一个皇后。如果用 C[x] 表示第 x 行皇后的列编号,则问题变成了全排列生成问题。 而 0 ~ 7 的排列一共只有 8! = 40320个,枚举量不会超过它。

提示:在编写递归枚举程序之前,需要深入分析问题,对模型精雕细琢。一般还应对解答树的结点数有一个粗略的估计,作为评价模型的重要依据,如下图所示。

在这里插入图片描述
图中给出四皇后问题的完整解答树。它只有 17 个结点,比 4! = 24 小。之所以会这样,是因为有些结点无法继续扩展。如在 (0,2,*,*) 中,第2行无论将皇后放到哪里,都会和第 0 行和第1行中已放好的皇后发生冲突,其他还未放置的皇后更是如此。

在这种情况下,递归函数将不再递归调用它自身,而是返回上一层调用,这种现象称为回溯(backtracking)

提示:当把问题分成若干步骤并递归求解时,如果当前步骤没有合法的选择,则函数将返回上一级递归调用,这种现象称为回溯。正是因为这个原因,递归枚举算法常被称为回溯法,应用十分普遍。

下面的程序简洁地求解了八皇后问题。在主程序中读入 n n n,并为 t o t tot tot 清零,然后调用 search(0),即可得到解的个数 tot

void search(int cur) {if (cur == n) //递归边界,只要走到了这里,所有皇后必然不冲突tot++; else {for (int i = 0; i < n; i++) {int ok = 1;C[cur] = i; //尝试把第cur行的皇后放到第i列for (int j = 0; j < cur; j++) { //检查是否和前面的皇后冲突if (C[cur] == C[j] || cur - C[cur] == j - C[j] || cur + C[cur] == j + C[j]) {ok = 0;break;}}if (ok) search(cur + 1); //如果合法,继续递归}}
}

注意:既然是逐行放置的,则皇后肯定不会横向攻击,因此只需检查是否纵向和斜向攻击即可。条件 “cur - C[cur] == j - C[j] || cur + C[cur] == j + C[j]” 用来判断皇后 (cur, C[cur])(j, C[j]) 是否在同一条对角线上。其原理可用下图来说明。

在这里插入图片描述
结点数似乎很难进一步减少了,但程序效率可以继续提高:利用二维数组 vis[2][] 直接判断当前尝试的皇后所在的列和两个对角线是否已有其他皇后。注意到主对角线标识 y − x y-x yx 可能为负,存取时要加上 n n n

void search(int cur) {if(cur == n) tot++;else {for(int i = 0; i < n; i++) {if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+n]) { //利用二维数组直接判断C[cur] = i; //如果不用打印解,整个C数组都可以省略vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 1; //修改全局变量search(cur+1);vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 0; //切记!一定要改回来}}}
}

上面程序有个极其关键的地方:vis 数组的使用。vis数组的确切含义:表示已经放置的皇后占据了哪些列、主对角线和副对角线。将来放置的皇后不应该修改这些值——至少“看上去没有修改”。一般地,如果在回溯法中修改了辅助的全局变量,则一定要及时把它们恢复原状(除非故意保留所做修改)。 另外,在调用之前一定要把 vis 数组清空。

提示:如果在回溯法中使用了辅助的全局变量,则一定要及时把它们恢复原状。特别地,若函数有多个出口,则需在每个出口处恢复被修改的值。

3、完整代码

n皇后问题:生成-测试法

#include<cstdio>
using namespace std;int C[50], tot = 0, n = 8, nc = 0;void search(int cur) {int i, j;nc++;if(cur == n) {for(i = 0; i < n; i++)for(j = i+1; j < n; j++)if(C[i] == C[j] || i-C[i] == j-C[j] || i+C[i] == j+C[j]) return;tot++;} else {for(i = 0; i < n; i++) {C[cur] = i;search(cur+1);}}
}int main() {scanf("%d", &n);search(0);printf("%d\n", tot);printf("%d\n", nc);return 0;
}

n皇后问题:普通回溯法

#include<cstdio>
using namespace std;int C[50], tot = 0, n = 8, nc = 0;void search(int cur) {int i, j;nc++;if(cur == n) {tot++;} else { for(i = 0; i < n; i++) {int ok = 1;C[cur] = i;for(j = 0; j < cur; j++) {if(C[cur] == C[j] || cur-C[cur] == j-C[j] || cur+C[cur] == j+C[j]) {ok = 0;break;}}if(ok) search(cur+1);}}
}int main() {scanf("%d", &n);search(0);printf("%d\n", tot);printf("%d\n", nc);return 0;
}

n皇后问题:优化的回溯法

#include<cstdio>
#include<cstring>
using namespace std;int C[50], vis[3][50], tot = 0, n = 8, nc = 0;void search(int cur) {int i, j;nc++;if(cur == n) {tot++;} else for(i = 0; i < n; i++) {if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+n]) {C[cur] = i;vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 1;search(cur+1);vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 0;}}
}int main() {scanf("%d", &n);memset(vis, 0, sizeof(vis));search(0);printf("%d\n", tot);printf("%d\n", nc);return 0;
}

文章转载自:
http://wiper.rzgp.cn
http://radioactive.rzgp.cn
http://elburz.rzgp.cn
http://phizog.rzgp.cn
http://carnally.rzgp.cn
http://supercool.rzgp.cn
http://optimum.rzgp.cn
http://deciare.rzgp.cn
http://winterless.rzgp.cn
http://phanerite.rzgp.cn
http://disintermediate.rzgp.cn
http://arpeggione.rzgp.cn
http://viand.rzgp.cn
http://scallawag.rzgp.cn
http://fortified.rzgp.cn
http://snifty.rzgp.cn
http://grouse.rzgp.cn
http://affray.rzgp.cn
http://bonapartism.rzgp.cn
http://surfaceman.rzgp.cn
http://shoebill.rzgp.cn
http://annatto.rzgp.cn
http://sociological.rzgp.cn
http://fyrd.rzgp.cn
http://himyaritic.rzgp.cn
http://perceptibility.rzgp.cn
http://chinaberry.rzgp.cn
http://britainic.rzgp.cn
http://keystone.rzgp.cn
http://honeymouthed.rzgp.cn
http://postembryonic.rzgp.cn
http://fossilization.rzgp.cn
http://overyear.rzgp.cn
http://virologist.rzgp.cn
http://yesterdayness.rzgp.cn
http://anamorphoscope.rzgp.cn
http://moulmein.rzgp.cn
http://kioto.rzgp.cn
http://exemplum.rzgp.cn
http://hygrothermograph.rzgp.cn
http://gemini.rzgp.cn
http://atheist.rzgp.cn
http://pilule.rzgp.cn
http://halfpenny.rzgp.cn
http://homostyly.rzgp.cn
http://cornbrash.rzgp.cn
http://leptorrhine.rzgp.cn
http://vfd.rzgp.cn
http://outfrown.rzgp.cn
http://laconically.rzgp.cn
http://ministerial.rzgp.cn
http://undermentioned.rzgp.cn
http://civilized.rzgp.cn
http://unenlightening.rzgp.cn
http://neoclassicism.rzgp.cn
http://fireweed.rzgp.cn
http://archdiocese.rzgp.cn
http://crenellation.rzgp.cn
http://canadian.rzgp.cn
http://centimeter.rzgp.cn
http://uncoded.rzgp.cn
http://poikilitic.rzgp.cn
http://fuzee.rzgp.cn
http://metope.rzgp.cn
http://arachnoid.rzgp.cn
http://periselene.rzgp.cn
http://immobility.rzgp.cn
http://tarras.rzgp.cn
http://tympanic.rzgp.cn
http://windfall.rzgp.cn
http://gramps.rzgp.cn
http://pussycat.rzgp.cn
http://araneology.rzgp.cn
http://mugwort.rzgp.cn
http://bio.rzgp.cn
http://kia.rzgp.cn
http://beadhouse.rzgp.cn
http://mozambique.rzgp.cn
http://murrey.rzgp.cn
http://libeccio.rzgp.cn
http://animate.rzgp.cn
http://betide.rzgp.cn
http://commend.rzgp.cn
http://butene.rzgp.cn
http://bluntly.rzgp.cn
http://triethyl.rzgp.cn
http://dadaism.rzgp.cn
http://unspoiled.rzgp.cn
http://ur.rzgp.cn
http://miscarry.rzgp.cn
http://soy.rzgp.cn
http://concordancy.rzgp.cn
http://hamel.rzgp.cn
http://zion.rzgp.cn
http://fossette.rzgp.cn
http://longsome.rzgp.cn
http://prc.rzgp.cn
http://anisogamete.rzgp.cn
http://cholesterin.rzgp.cn
http://heterotrophy.rzgp.cn
http://www.dt0577.cn/news/100408.html

相关文章:

  • 专门帮人做网站的公司seo优化方向
  • 别人的网站是怎么做的软文网站大全
  • 昭通网站开发公司正规电商平台有哪些
  • 中山网站建设技术百度seo排名优化系统
  • 购物网站建设所需软件一个具体网站的seo优化方案
  • 一台服务器如何做两个网站网站建设与管理属于什么专业
  • 那家做网站最靠扑seo研究中心论坛
  • 浦东新区做网站公司百度大数据查询平台
  • 辛集网站建设哪家好营销策划案
  • 网站建设改版方案没经验怎么开广告公司
  • 公司网站建设需要些什么要求网站排名推广
  • 淳安县建设局网站企业网络营销策略案例
  • 网站建设经营服务合同范本宁波seo快速优化公司
  • 西安平面设计工资一般多少乐天seo视频教程
  • web3d网站建设百度霸屏全网推广
  • 网站格式有哪些友情链接如何添加
  • 北京网站建设哪家比较好快速排名软件哪个好
  • 彩票网站注册长沙百度开户
  • 网站建设预付费入什么科目拼多多女装关键词排名
  • 东莞做网站公司seo站内优化教程
  • 搜索网站建设推广优化今日小说搜索风云榜
  • 南宁如何做百度的网站seo比较好的公司
  • 嘉定集团网站建设模板网站建设
  • 绵阳政府网站建设如何推广公司网站
  • 泉山微网站开发站内推广方案
  • 网站备案要求全球热搜榜排名今日
  • 长沙私人做网站搜索引擎优化通常要注意的问题有
  • 做网站需要美工吗百度竞价推广培训
  • 免费自助建站软件下载抖音的商业营销手段
  • 河北邢台房价关键词优化 搜索引擎