n皇后问题python_N皇后问题(python实现)
问题描述 规则同8皇后问题, 但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大。 输入格式 一个8*8的棋盘。 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3
N皇后问题
n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。
给定一个整数n,返回所有不同的n皇后问题的解决方案。
每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。
样例逻辑回归(Logistic Regression)是目前流行最广泛的算法之一。 1. 何为逻辑回归: 逻辑回归主要思想是根据现有的训练集(数据)进行分类,判断这些数据属于哪一个类别,通俗来讲,就是完成一件事的可能性有多大。所以逻辑回归是一种分类算法,它的输出
对于4皇后问题存在两种解决的方案:
[
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."],
["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
思路
由于每行只能有一个皇后,第一行 有N种可能,从一行一列开始 如果一行一列可以放置皇后 则找到下一行第一个能放置皇后的列。如果下一行 没有符合条件的列,就返回上一行找到下一个可以放置皇后的列。遍历的行数 == N 则获得一次 结果。如果在第一行也找不到能放置皇后的列 则查找结束。
实现
循环实现
class Solution:
""" Get all distinct N-Queen solutions @param n: The number of queens @return: All distinct solutions """
def solveNQueens(self, n):
# write your code here
#每一行和每一列只能有一个皇后 而且必定有一个皇后
n = int(n)
result = []
col = [-1]*n
k = 0
#row
while k>=0:
#查看下一列
col[k] = col[k]+1
while col[k]
#col
col[k] += 1
if col[k]
#获得一次解
if k == n-1:
empty = ['.'*n for i in range(0,n)]
for i in range(0,n):
temp = list(empty[i])
temp[col[i]] = 'Q'
empty[i] = ''.join(temp)
result.append(empty)
#判断下一行
else:
k +=1
#清除残留数据
col[k] = -1
#没有找到结果回溯
else:
k -= 1
return result
def judgePlace(self,k,col):
for i in range(0,k):
if col[i] == col[k] or (abs(col[k]-col[i]) == abs(k - i)):
return False
return True
递归实现
class Solution:
""" Get all distinct N-Queen solutions @param n: The number of queens @return: All distinct solutions """
def solveNQueens(self, n):
n = int(n)
result = []
record = [0]*(n+1)
self.findResult(result,n,1,1,record)
return result
def findResult(self,result,total,row,col,record):
if row == 0:
return result
record[row] = col
while record[row]<=total and not self.judgePlace(row,record):
record[row] += 1
#回溯
if record[row]>total:
row -= 1
newCol = record[row] + 1
self.findResult(result,total,row,newCol,record)
else:
if row == total:
empty = ['.'*total for i in range(0,total)]
for i in range(0,total):
temp = list(empty[i])
temp[record[i+1]-1] = 'Q'
empty[i] = ''.join(temp)
result.append(empty)
#回溯
row -= 1
newCol = record[row] + 1
self.findResult(result,total,row,newCol,record)
else:
row += 1
self.findResult(result,total,row,1,record)
def judgePlace(self,row,col):
for i in range(1,row):
if col[i] == col[row] or (abs(col[row]-col[i]) == abs(row - i)):
return False
return True
n皇后问题python_N皇后问题(python实现)相关推荐
- n皇后问题python_N皇后问题—回溯算法经典例题
N 皇后是回溯算法经典问题之一.问题如下:请在一个 ni n 的正方形盘面上布置 n 名皇后,因为每一名皇后都可以自上下左右斜方向攻击,所以需保证每一行.每一列和每一条斜线上都只有一名皇后. 最简单的 ...
- 【恋上数据结构】回溯、剪枝(八皇后、n皇后)、LeetCode51.N皇后、LeetCode52.N皇后 II
回溯 回溯(Back Tracking) 提出八皇后问题(Eight Queens) 初步思路一:暴力出奇迹 初步思路二:根据题意减少暴力程度 初步思路三:回溯法(回溯+剪枝) 四皇后 - 回溯法图示 ...
- 皇后问题,8皇后、n皇后、2n皇后
8皇后问题 问题描述: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例. 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意 ...
- 历经五主而不衰的风流皇后:南朝萧皇后
历经五主而不衰的风流皇后:南朝萧皇后 2010年07月08日 历史是镜子,历史也是艺术.它可以借鉴,更可以欣赏.正是因为在历史的长河中有了那些非常女性美丽而生动的身影,历史才具有了知性的美感与可玩味的 ...
- 八皇后问题的进化(4)-python写的八皇后
这是"Beginning Python From Novice to Professional"里用python写的八皇后,代码量很少,用到了生成器. python一直给我的感觉是 ...
- python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)
试题 基础练习 2n皇后问题 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个 ...
- python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)
八皇后问题,是在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 算法思路: 八皇后问题实质为一种深度优先(DFS)搜索问题. ...
- java计算八皇后_八皇后java算法
public class NQueens { public static int num = 0; // 累计方案总数 public static final int MAXQUEEN = 5;// ...
- P1219 八皇后(N皇后,烧脑标记剪枝,DFS)
P1219 八皇后 Luogu 应用 题库 训练 比赛 记录 讨论 20.7K 通过 45.7K 提交 题目提供者 评测方式 云端评测 标签 USACO高性能 难度 普及/提高- 时空限制 1000m ...
最新文章
- 《科学》:媲美AlphaFold2的蛋白质结构预测新工具问世,一台游戏计算机十分钟出结果,完全免费...
- 浅析枚举类型(Enumerated types)
- Scala元组数据的遍历
- 15 函数回调 模块
- 标准库类型string的基本功能和使用
- 【原创】Team Foundation Server 域环境迁移
- java微妙_编码Java时的10个微妙的最佳实践
- Https的前世今生
- java 读取 excel poi_Java中读取Excel功能实现_POI
- IDEA用maven创建springMVC项目和配置
- jQuery:ajax中form表单serialize()序列化方法
- mac如何判断本机有没有gpu_属牛人:属牛如何判断一段感情有没有未来
- 联想·云计算中心运维服务(1+X中级)教材出版
- 校赛第二轮 —— 国产电影保护月是国产电影之福 / 祸
- 《从0开始做运营[张亮]》——读书笔记
- dell服务器硬件参数提升速度,DELL R620服务器配置
- html怎样修改背景图片大小,css中如何设置背景图片的大小?
- 使用 css 创建 3D 效果的 书籍
- 使用JME3开发的Android 3D游戏 - 落樱之剑v2.2
- 合并 2 个有序列表(关键词:有序列表/有序/合并/归并)