“回溯法”和“八皇后”问题本身不再多做介绍,相信很多人都知道,尤其是学习过数据结构的人。如果还不清楚可以google或者baidu一下,亦或是找本数据结构的书看一下。
“八皇后”问题:可以简单的理解为在一个8*8的棋盘上,放8个旗子(国际象棋中称为皇后queen),要求这8个棋子中任意两个都不在同一行、列、斜线上。
“回溯法”用在这里的思路是:
1 逐行放置。
2 对于每一列,从第1列开始(对应矩阵的第0列),逐列测试其是否存在冲突。
2.1 如果冲突就测试下一列,依次进行;
2.2 如果不冲突,放置下一行;
程序代码如下:(如果想更改皇后数量,直接更改queen_number即可,例如:可衍生出在6*6棋盘上放6个皇后)
参考资料:《C和指针》
本文链接:http://blog.csdn.net/daheiantian/archive/2011/01/23/6225328.aspx