剑指offer系列源码-八皇后问题 C语言
来源:互联网 发布:linux系统内核裁剪 编辑:程序博客网 时间:2024/04/28 23:11
题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。
这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘者的分析复杂问题的能力以及编程的能力。
由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。于是我们可以定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i行的皇后的列号。先把ColumnIndex的八个数字分别用0-7初始化,接下来我们要做的事情就是对数组ColumnIndex做全排列。由于我们是用不同的数字初始化数组中的数字,因此任意两个皇后肯定不同列。我们只需要判断得到的每一个排列对应的八个皇后是不是在同一对角斜线上,也就是数组的两个下标i和j,是不是i-j==ColumnIndex[i]-Column[j]或者j-i==ColumnIndex[i]-ColumnIndex[j]。
思路想清楚之后,编码并不是很难的事情。下面是一段参考代码:
0 0
- 剑指offer系列源码-八皇后问题 C语言
- 剑指offer系列源码-八皇后问题
- 剑指offer:八皇后问题
- 【剑指offer】八皇后问题
- 【剑指offer】八皇后问题
- 【剑指offer】八皇后问题
- C语言 八皇后问题
- C语言-八皇后问题
- c语言八皇后问题
- 《剑指Offer》面试题:八皇后问题
- 八皇后问题的C语言实现
- 八皇后问题-回溯法-c语言
- 八皇后问题(C语言版本)
- 八皇后问题-C语言
- 八皇后问题-C语言求解
- 八皇后问题用C语言解决
- C语言八皇后冲突问题
- C语言——八皇后问题
- python 重复执行某一命令
- javascript+html做一个俄罗斯方块的小游戏
- Android控件关键简化笔记
- JNI技术---clojure 调用C++库的方法
- Android Studio新功能解析,你真的了解Instant Run吗?
- 剑指offer系列源码-八皇后问题 C语言
- CSS级联与优先级
- 快速排序
- 稳扎稳打JS——执行上下文
- 第三周项目二 建立顺序表的算法库
- Glide与Picasso的优势与区别
- Codeforces Round #371 (Div. 2)B. Filya and Homework
- 表单元素练习一
- C#之WinForm基础 给textbox空间添加水平,垂直滚动条