范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

算法八皇后问题理解回溯法

  回溯算法从空解开始,并逐步扩展该解。搜索递归地通过各种不同的构造解决方案的路径。
  例如,考虑计算n皇后问题:在n*n的棋盘上放置彼此不受攻击的n个皇后。
  (皇后可以攻击在同一行、同一列、同一斜线上的棋子)
  按以上规则:同一行或同一列或同一斜线上只能有一个皇后,同一行或同一列上必须有一个皇后。
  n皇后问题的解空间是一棵n叉树,树的深度为n。
  当n为4时,有两种可能的解决方案:
  八皇后问题对于每一行是否可以放置皇后,可用一个规模为8的循环去判断。每一行的判断操作相同,如果操作完成了8行(放置了8个皇后),便求出了一个解。所以该问题可以用递归去做。如果某一行全部位置无法放置皇后时,没必要继续深入,可以回溯到上一步,也就是使用回溯法。对于非尾递归,递归函数回退时,递归点后面的代码就是递归函数回退后执行的部分。对于八皇后问题,上述的循环可以判断某行下一列是否可以放置皇后,而上一列放置皇后的操作进行逆操作后便完成了回溯(递归有天然的回退阶段)。
  八皇后问题的暴力枚举搜索或递归解法会形成一个棵8叉完全树,回溯解法可以通过约束条件避免一些搜索继续深入,形成一棵8叉不完全树。
  为简便起见,我们可以用四皇后问题去理解,然后泛化到一般的情况。
  在底层,前三种配置是非法的,因为皇后们互相攻击。然而,第四种配置是有效的,可以通过在棋盘上再放置两个皇后来扩展到完整的解决方案。只有一种方法可以放置剩下的两个皇后。
  如下面左图所示:
  从y=0,x=0开始,search(0)递归调用search(1)(x=2,y=1),递归调用search(2)
  当y=2,x=3时,递归函数search(2)执行完毕,回退到search(1),x=0,逆操作,循环到x=3……
  code demo:#include #define n 4int column[n*2] = {0};int  diag1[n*2] = {0};int  diag2[n*2] = {0};int count = 0;void search(int y) {    if (y == n) {        count++;        return;    }    for (int x = 0; x < n; x++) {        if (column[x] || diag1[x+y] || diag2[x-y+n-1])             continue;        column[x] = diag1[x+y] = diag2[x-y+n-1] = 1;        search(y+1);        column[x] = diag1[x+y] = diag2[x-y+n-1] = 0; // 回退时的逆操作,下一轮循环x++    }    return;}main(){    search(0);    printf("%d ",count);    getchar();}/*n=4, 2n=8, 92n=16, 14772512*/
  搜索从调用search(0)开始。棋盘的大小为n*n,代码计算要计数的解决方案数。
  代码假设棋盘的行和列编号从0到n-1。当使用参数y调用函数搜索时,它会在行y上放置皇后,然后使用参数y-1调用自身。然后,如果y=n,则已找到解决方案,变量count增加1。
  数组column跟踪包含皇后的列,数组diag1和diag2跟踪对角线。不允许在已包含皇后的列或对角线中添加其他皇后。例如,4*4棋盘编号如下,当x、y取不同的值时,对应列方向column[x]、"/"方向上diag1[x+y]、""方向上diag2[x-y+4-1]的取值为0时表示无皇后:
  y 2,x=3
  回溯。
  y 1,x=3
  ……
  count=1。
  回溯到下面绿色点:
  继续逐步回溯:
  ……
  count=2。
  继续逐步回溯,最后count=2。
  可视化操作的网页地址:
  https://pythontutor.com/render.html#mode=display
  -End-

(组图)加勒比海小岛风光Curacao,加勒比海的一個小島,荷蘭的殖民地。這里永遠不會有冬天,所以这裡的天空是那麼的藍,海水也是那麼的美。Willemstad城市的房子是多彩多色的,犹如置身童话故事中。前库尔勒成帮柳风景近日,库尔勒市孔雀河两岸天鹅河两岸和鸿雁河两岸等市区种植的成帮柳领先发芽,黄绿色的成帮柳随风飘动,与清清的河水交相辉映,美不胜收。2001年,王成帮意外发现了一棵特殊的柳树这棵柳树东势东新观光农园采甜柿东势是台中重要的水果产地。今次有幸到访了其中一个果园,东新果园占地十二公顷,成立至今已有约二十年的历史,位处于往东势林场游乐区方向的路旁,所以很多游人在假日到访这个台中最美丽的森林莫内的教堂莫奈(1840年11月14日1926年12月5日),创始人之一和代表人物。莫奈的创作是来自于光与色彩的理性科学,其毕生致力于光与色的研究,光是他画中永恒的主角,为了研究不同时间阳光清明小长假开启,周边自驾游选什么车清明小长假即将来袭,除了惯例回乡下祭祖,也是举家一同踏青的好时节。不如趁着假期,带上全家老小或约上三五好友,一起外出踏青或者来一次自驾短途旅行,呼吸一下郊外的新鲜空气,看看沿途美景你知道尼罗河的馈赠怎么来的吗?尼罗河的馈赠尼罗河是埃及的母亲河,她孕育了灿烂的古埃及文明。公元前5世纪,古希腊历史学家希罗多德在埃及旅行后发出了这样的感叹。埃及是尼罗河的馈赠。尼罗河全长6,671公里,是世界上死海淹不死人,为啥没能成为游泳胜地?导游只知其一,不知其二众所周知,世界上唯一淹不死人的海叫做死海,死海并非是海,而是一座湖泊,其叫法和我国云南人叫当地的洱海为海有差不多的意思。在许多旅行社宣传死海旅游的海报当中,经常可以看到有人平躺在死40张只有在印尼才能看见的奇葩景象雅加达市中心的大树,正好长在路中间。夏天地面太热了,出去遛狗,记得给它穿上鞋子,避免烫伤脚。雅加达是印尼的首都,市区就像一座大棋盘,房屋是上面的棋子。香蕉快成熟了,旁边插在那里的旗老街坊心声京西福地石景山不止有首钢园八大处还有很多值得大家前来打卡的地方蕴含着丰厚的人文历史烟火气除了生活工作在石景山的老街坊对石景山有表达不完的爱和祝福也有着越来越多的老街坊开始热爱石景山行程卡带会影响出行吗?解答来了行程卡带是什么意思?会影响出行吗?行程信息为什么没有更新?在查询行程卡时大家也许会遇到一些疑问现在全都为你解答一起来看行程卡上的星号是什么意思?到访地右上角的星号标记表示过往14天湖南最后的慢火车,被称为扶贫专列,车票最低只需1元随着越来越多的省市迎来高铁,高铁已是大家火车出行时的首选。许多人都体会过高铁带来的便利,有时候传统火车需要开大半天,高铁1,2小时就能到达。虽然高铁经济高效,但一些绿皮车依旧被保留
续航有点拿不出手!韩系高端电动车,捷尼赛思GV60国内首秀11月10日,在捷尼赛思品牌愿景发布会上,捷尼赛思GV60在国内正式首发,同时亮相的还有捷尼赛思纯电G80与捷尼赛思纯电GV70。新车定位纯电中型SUV,是基于EGMP平台打造而来微信又更新!朋友圈评论扩容了安卓微信更新到8。0。30正式版后,带来不少新功能。其中,还对朋友圈的评论编辑展示进行了扩容。在朋友圈给好友评论,当输入的内容较长时,输入框会随着文字数量增加,从而扩大显示区域。亲电商平台首次没有披露双11销售数据,但从历史数据可推算出来01hr昨天是双11,大家买到想要的东西了吗?我也参加了双11,在京东买了3本书,1个鼠标和1块硫磺皂。往年的双11,淘宝京东都会公布数据,比如销售额提升了很多,购物人数又到了新高双十一捡漏旗舰机!一加领衔,三款骁龙8旗舰能文能武经过大半个月的狂欢,今年双十一终于落下了帷幕,不过对于打工人来说,由于双十一高潮期恰好在工作日,可能错过了自己的心仪好物,比如我身边就有不少想买手机的同事,因为工作繁忙没有抓住机会DeepMind会令结构生物学家失去饭碗吗?已超高效率破解超过2亿种蛋白质结构近期,Google旗下AI公司DeepMind取得里程碑式突破,其AlphaFold算法构建的数据库,如今已破解了几乎人类目前已知的超过2亿种蛋白质结构。为研发新药物,应对饥荒污染双十一种草了些什么?小米首款骨传导耳机绝对是米粉的福音大家好,我是爱读书的masterjohn话说一年一度的双十一已经在悄无声息的情况下来临了,我也是悄无声息的趁着老婆大人不知道,买了这款小米的最新最热辣的第一代骨传导耳机,准备做一盘那些能支撑你走很远的励志句子1。hr碰到一点压力就把自己变成不堪重负的样子,碰到一点不确定性就把前途描摹成暗淡无光,碰到一点不开心就把它搞得似乎是这辈子最黑暗的时候,大概都只是因为不想努力而放弃找的最拙劣的借你和自己,熟吗?自从出生的那一刻起,我们就认识自己了,但了解自己并不是我们与生俱来的,我们总是在生活中的每一个站台里对自己的点滴发现与总结。不管何时,我们都不能否认,表扬与批评都能成为影响我们每天马斯克最有风险的事情,就是对未来不采取任何行动来源红与绿埃隆马斯克的演讲资料整理为了有一个美好的未来,有些事情是非常重要的。如果我们不做,就会有大麻烦,那么风险到底是多大?因为如果我们不采取这些行动,我们就不会有一个美好的未来你一年的8760小时1。懂一百个道理,不如懂一个方法重要一百次的感动,不如一次行动有帮助。亚里士多德老哥说的是我们每一个人都是由自己一再重复的行为所铸造的,因而优秀不是一种行为,而是一种习惯。2。世界潇洒走一回头条创作挑战赛一辆车疾驰而过,我远远地看见路上有一个动物在路上垂死挣扎,走近才知道是一只小猫。我也只能赶紧离开,以防意外的事情发生,引出不必要的麻烦。现在想做个好人也不那么容易,搞