标签:index return self dfs start position 解决 皇后
33. N皇后问题
中文 Englishn皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线)。
给定一个整数n,返回所有不同的n皇后问题的解决方案。
每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。
样例
例1:
输入:1
输出:
[["Q"]]
例2:
输入:4
输出:
[
// Solution 1
[".Q..",
"...Q",
"Q...",
"..Q."
],
// Solution 2
["..Q.",
"Q...",
"...Q",
".Q.."
]
]
挑战
你能否不使用递归完成?
class Solution: """ @param: n: The number of queens @return: All distinct solutions """ def solveNQueens(self, n): # write your code here self.result = [] self.position = [-1]*n self.dfs(n, start_index=0) return self.result def to_chars(self, position): ans = [] n = len(position) for i in range(0, n): row = ['.']*n row[position[i]] = 'Q' ans.append("".join(row)) return ans def is_valid_pos(self, position, start_index, k): for i in range(start_index): if position[i] >= 0 and (position[i] == k or \ abs(start_index-i) == abs(k-position[i])): return False return True def dfs(self, n, start_index): if start_index == n: self.result.append(self.to_chars(self.position)) return for i in range(0, n): if start_index < n and self.is_valid_pos(self.position, start_index, i): self.position[start_index] = i self.dfs(n, start_index+1) self.position[start_index] = -1
这种题目写起来真的是比较繁琐。
标签:index,return,self,dfs,start,position,解决,皇后 来源: https://www.cnblogs.com/bonelee/p/11710161.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。