八皇后问题解决思路
2024-07-13 01:39:05作者:饭克斯
先声明我们根据条件可以知道皇后肯定是每行都有且只有一个所以我们创建一个数组x[t]让数组角标表示八皇后的行,用这个角标对应的数组值来确定这个皇后在这行的那一列。
我们用递归来做:
这问题要求皇后所在的位置必须和其他皇后的位置不在同一行、列还有把两个皇后看成点其|斜率|=1
所以我们就要写这个限定条件用一个函数来实现:函数内对没一个已经放好的皇后的位置进行判断,所以就要有个循环。
我们既然是用递归来解决问题那就要把这个问题分成一个个相同的小问题来实现对吧!
这小问题是什么呢,不难发现我们要在8*8的方格里放好8个皇后那我们就要知道在8(列)*7(行)是怎么放的在有我们事先写好的判断函数放好最后行就搞定了;以此类推我们要知道8*7的怎么方的我们就要知道8*6是怎么样的就好了。。。。。。
所以我们是以一行怎么放作为一个单元
那好我们就去建一个可以放好一行的函数backtrack(intt)里面的t表示是第几行,在main函数调用的时候第一次传进来的是0也就是从第一行开始判断。
我们就开始写函数体了:
没一行有8个位置可以放每一个位置我们都要去判断一下所以我们就用循环来搞定。
在这个循环里面我们让x[t]=i也就是从这一行的第一个开始判断。放好后就要去判断
是否符合条件。如果符合条件我们就在调用这个函数本身backtrack不过穿进去的参数
是t+1也就是下一行的意思。
在进行判断下一行之前我们要判断一下t是不是等于8也就是已经是最后一行了,如果是最后一行了我们就可以将其进行输出。打印8*8的矩阵(提示在写一个函数)皇后的位置用1表示出来没有的用0表示。
这是我自己的体会;里面可能有写表述不当的地方要是不懂可以来问我!(第一次回答这么长的问题)
展开全文
相关攻略
- 八代“高尔夫”来袭,全新数字化改革,值得期待
- 八爪鱼是什么样的
- 八方旅人职业玩法介绍职业队伍如何搭配
- 八段锦是我国一种传统的健身功法吗
- 八位堂确认参展2024ChinaJoyBTOC,打卡上海不见不散2024ChinaJoyBTOC互动娱乐馆
- 八神连招使用过程中技巧详细介绍
- 八方旅人隐藏职业详细介绍一览
- 八荒战纪手游攻略,《八荒战纪手游》攻略大全!
- 八尾攻略允仲,八尾攻略指南
- 八戒打战神刑天视频攻略,八戒战胜刑天,完全攻略视频分享!
- 八重天10攻略,八重天新手攻略指南
- 八本怎么升九本,第九用英语怎么八
- 八阿哥换装攻略,八阿哥如何换装攻略必看!
- 八方旅人冰龙攻略,八方旅人:冰龙挑战指南
- 八阵图密室逃脱攻略,解密八阵图,成功逃离密室
- 八尾游戏he攻略,重写后的标题:《八尾游戏》全面攻略分享