[LeetCode]N-Queens I and II
来源:互联网 发布:java怎么求最小公倍数 编辑:程序博客网 时间:2024/04/28 07:29
两个题是一个意思,只不过第一题需要记录所有的解的类型。
第一题的代码:
def isValid(n, colValue): for x in xrange(0,n): if colValue[n] == colValue[x] or abs(colValue[n]-colValue[x]) == n - x : return False return Truedef findSol(nQueens, result, row, colValue): # print row, colValue if row == nQueens: sol = [] for x in xrange(0,nQueens): temp = "" for y in xrange(0,nQueens): if y == colValue[x]: temp+= "Q" else: temp += "." sol.append(temp) result.append(sol) else: for x in xrange(0,nQueens): colValue[row] = x if isValid(row, colValue): findSol(nQueens, result, row+1, colValue )class Solution: # @return a list of lists of string def solveNQueens(self, n): cValue = [] for x in xrange(0,n): cValue.append(0) result = [] findSol(n, result, 0, cValue ) return resultsol = Solution()sol.solveNQueens(4)
关键的点:
1. 用colValue[n]来记录第n行的皇后放在第几列。因为一行肯定只有一个皇后,所以根本不用考虑有皇后在同一行的情况。也就是说colValue[i]表示第i行的皇后放在第colValue[i]列;
2. isValid函数。通过输入行号n,判断第n行的列值是否合法。也就是说与其他行的皇后有没有在同列或者同一斜线上;
3.对每一行的皇后,遍历所有的列值,得到合理的解就继续求下一行的皇后,直到所有的皇后位置都确定下来。
0 0
- LeetCode题解:N-Queens I and II
- [LeetCode]N-Queens I and II
- [Leetcode] N Queens I,II
- LeetCode - N-Queens I && II
- LeetCode | N-Queens I,II
- LeetCode 51/52. N-Queens i, ii
- leetcode N-Queens I & II N皇后问题
- [LeetCode 51&52] N-Queens I & II (N皇后问题)
- LeetCode: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- 【leetcode】N-Queens II
- LeetCode: N Queens II
- [LeetCode]N-Queens II
- LeetCode - N-Queens II
- LeetCode:N-Queens II
- 【leetcode】N-Queens II
- LeetCode:N-Queens II
- Handler的简单介绍和使用
- 有向图的深度优先搜索和广度优先搜索
- OC方法和文件编译
- 计算1-100中含有9的数字
- Mac下搭建php开发环境【转】 有一处改动写在最前面了
- [LeetCode]N-Queens I and II
- java发送http的get、post请求
- HDU1372 Knight Moves BFS
- 新学到几个 权限特地记一下
- ibatis连接两个数据量
- 在线画流程图等工具
- Android:为WebView中的Java与JavaScript的交互漏洞提供【安全可靠】的多样互通方案
- 一个超简单的系统内核
- win7下64位 librtmp编译