2008-04-24 Ruby 测试题(00014)

嗯~学习了
ORZ, 彻底学习了。
回溯难就难在“简单的”数据模型上了,这个模型决定了你该怎么进,怎么退,怎么还原!
这个模型同样决定了你程序的可读性和可维护性甚至可扩充性。
虽然执行效率是肯定回溯高,但不是特别需要我还是会选择递归或者穷举。
当然定义巧妙的数据模型还是非常值得欣赏的。
比如题目的八皇后问题,定义2维数组结构的程序可以肯定不如定义1维数组的程序效率高。

Jmouse的做法已经说得很清楚了,我说说我的做法:
首先根据题意 8*8的棋盘放8个不能互吃的皇后,
那么肯定:
1 每一行有且只有1个皇后。
2 同样每一列有且只有1个皇后。

我们把每一行皇后的位置看成一个数,总共有8个数字。
结果可以肯定是1到8这八个数字的排列方式。
所以我首先是利用以前做的全排列函数找出所有可能的排列方式,
然后定义一个检查函数去掉对角线能互吃的情况。
然后输出结果。

相信对于初学者来说,会更容易理解一点吧。

[ 本帖最后由 bbschat 于 2008-4-30 19:02 编辑 ]
支持支持支持支持支持支持
找到了点门路,呵呵,继续跟进!
新手~新手~请指教