如何解决如何修改此代码以在选择下一个女王时考虑 MRV 策略?
这是解决N-Queens问题的python源代码(假设n等于6)。
class NQueens:
def __init__(self,size):
# Store the puzzle (problem) size and the number of valid solutions
self.size = size
self.solutions = 0
self.solve()
def solve(self):
positions = [-1] * self.size
self.put_queen(positions,0)
print("Found",self.solutions,"solutions.")
def put_queen(self,positions,target_row):
if target_row == self.size:
self.show_full_board(positions)
self.solutions += 1
else:
for column in range(self.size):
if self.check_place(positions,target_row,column):
positions[target_row] = column
self.put_queen(positions,target_row + 1)
def check_place(self,ocuppied_rows,column):
for i in range(ocuppied_rows):
if positions[i] == column or \
positions[i] - i == column - ocuppied_rows or \
positions[i] + i == column + ocuppied_rows:
return False
return True
def show_full_board(self,positions):
for row in range(self.size):
line = ""
for column in range(self.size):
if positions[row] == column:
line += "Q "
else:
line += ". "
print(line)
print("\n")
def main():
NQueens(6)
if __name__ == "__main__":
main()
什么是 MRV 策略? 我如何修改此代码以在选择下一个女王时考虑 MRV 策略?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。