| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> dfs题解:n皇后 -> 正文阅读 |
|
[数据结构与算法]dfs题解:n皇后 |
一,题目: 二,主要思想: dfs深度搜索 三,所用函数: memset(内存赋值函数)。 四,思路: 1,主体思路: 通过建立递归在二维数组(n*n)中找到不在同一横、竖、斜线上的n个点。 2,判断不在同一横、竖、斜线思路(本题难点): 横:我通过按行进行递归避免了在同一行的问题,即用行作为递归函数的形参每次递归在本次递归操作的形参上加一(即选择下一行)。 竖:建立一个函数lie用以判断这一列上是否有点已被使用,有则返回0,否则返回1。 此处用到了一个全局数组lie1 斜线: 此处判断分为从左上到右下和右上到左下 左上到右下: ?其实就是算横纵坐标的差 横纵坐标差相同就在左上到右下的同一条斜线上。 此处用到了一个全局数组chaz(记住它,后面还有用) 右上到左下: 本质是横纵坐标的和; ?横纵坐标和相同就在右上到左下的同一条斜线上。 此处用到了一个全局数组he2(记住它,后面还有用) 五,注意事项: 还记得前面用到的两个数组么,因为行和列的加减会产生零或负数所以不能把这两个数组初始化为零此处需要用memset函数进行赋值 ?六,代码:
七,样例 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/29 11:37:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |