八皇后的题目
2005-04-28 15:01
211 查看
在一个8*8的棋盘上放置8个皇后,使得两两不在一条横or竖or斜线上。你可以想象使第一个棋子占据第一行棋盘的第一个位置(1,1),然后将第二个棋子置于第二行棋盘的满足皇后间条件的位置,比如(2,3),依次逐行两两判断。遇到没有位置可放的情况自然要将前面一行的棋子位置继续移动一个,也就是要回溯,其余的细节你可以参考一下相关书籍,可以递归当然也可以用非递归实现。希望我说得还算清晰哦:)
---------------------------------------------------------------
最好使用栈来解决这个问题:
1,先建立一个栈,然后就是像楼上说的那样,先把第一个棋子放入第一行,第一列(1,1),把它存入栈底。
2,遍历找第二个棋子的位置,将第二个棋子置于第二行棋盘的满足条件的位置,比如(2,3),再存入栈顶。
3,寻找第三个棋子得位置,
4,…………
5,在遍历完寻找不到该棋子得位置时,就是上一个棋子放的位置不对。将上一个棋子出栈,再遍历寻找上一个棋子的其他位置,
6,如果还找不到就是上一个的上一个的棋子的位置不对,再继续出栈, 遍历寻找其位置,
7,……
其实就是一个递归,回朔的问题,只是在递归,回溯的过程中,使用栈来存放所找到棋子的位置。
---------------------------------------------------------------
最好使用栈来解决这个问题:
1,先建立一个栈,然后就是像楼上说的那样,先把第一个棋子放入第一行,第一列(1,1),把它存入栈底。
2,遍历找第二个棋子的位置,将第二个棋子置于第二行棋盘的满足条件的位置,比如(2,3),再存入栈顶。
3,寻找第三个棋子得位置,
4,…………
5,在遍历完寻找不到该棋子得位置时,就是上一个棋子放的位置不对。将上一个棋子出栈,再遍历寻找上一个棋子的其他位置,
6,如果还找不到就是上一个的上一个的棋子的位置不对,再继续出栈, 遍历寻找其位置,
7,……
其实就是一个递归,回朔的问题,只是在递归,回溯的过程中,使用栈来存放所找到棋子的位置。
相关文章推荐
- 【LeetCode】N-Queens && 【九度】题目1140:八皇后
- 九度 oj 题目1140:八皇后
- 题目1140:八皇后
- 九度 1140 题目1140:八皇后
- [递归经典题目]八皇后问题
- 一个题目包括70种网页制作常用技巧 (转)
- 2014年3月阿里巴巴实习生招聘笔试题目-北京站
- Leetcode题目分析 2. Add Two Numbers
- 题目“输入数字星期,输出英文”——代码调试有误
- 中兴笔试题目汇总
- 2014-03-29.阿里实习生招聘笔试题目
- 九度题目1156
- 【NOIP考前题目回顾】Luogu P1040
- 求助:ACM题目
- 2014阿里巴巴前端开发工程师暑期实习在线测试题目及答案思路
- 一道有关static的题目
- 一道闭包题目的做题笔记
- [转]pku数学类算法题目小结
- 2011-10-15腾讯校园招聘笔试题目与参考答案
- C#笔试题目(综合版样题)