问题描述 规则同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实现)相关推荐

  1. n皇后问题python_N皇后问题—回溯算法经典例题

    N 皇后是回溯算法经典问题之一.问题如下:请在一个 ni n 的正方形盘面上布置 n 名皇后,因为每一名皇后都可以自上下左右斜方向攻击,所以需保证每一行.每一列和每一条斜线上都只有一名皇后. 最简单的 ...

  2. 【恋上数据结构】回溯、剪枝(八皇后、n皇后)、LeetCode51.N皇后、LeetCode52.N皇后 II

    回溯 回溯(Back Tracking) 提出八皇后问题(Eight Queens) 初步思路一:暴力出奇迹 初步思路二:根据题意减少暴力程度 初步思路三:回溯法(回溯+剪枝) 四皇后 - 回溯法图示 ...

  3. 皇后问题,8皇后、n皇后、2n皇后

    8皇后问题 问题描述: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例. 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意 ...

  4. 历经五主而不衰的风流皇后:南朝萧皇后

    历经五主而不衰的风流皇后:南朝萧皇后 2010年07月08日 历史是镜子,历史也是艺术.它可以借鉴,更可以欣赏.正是因为在历史的长河中有了那些非常女性美丽而生动的身影,历史才具有了知性的美感与可玩味的 ...

  5. 八皇后问题的进化(4)-python写的八皇后

    这是"Beginning Python From Novice to Professional"里用python写的八皇后,代码量很少,用到了生成器. python一直给我的感觉是 ...

  6. python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)

    试题 基础练习 2n皇后问题 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个 ...

  7. python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)

    八皇后问题,是在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 算法思路: 八皇后问题实质为一种深度优先(DFS)搜索问题. ...

  8. java计算八皇后_八皇后java算法

    public class NQueens {  public static int num = 0; // 累计方案总数 public static final int MAXQUEEN = 5;// ...

  9. P1219 八皇后(N皇后,烧脑标记剪枝,DFS)

    P1219 八皇后 Luogu 应用 题库 训练 比赛 记录 讨论 20.7K 通过 45.7K 提交 题目提供者 评测方式 云端评测 标签 USACO高性能 难度 普及/提高- 时空限制 1000m ...

最新文章

  1. 《科学》:媲美AlphaFold2的蛋白质结构预测新工具问世,一台游戏计算机十分钟出结果,完全免费...
  2. 浅析枚举类型(Enumerated types)
  3. Scala元组数据的遍历
  4. 15 函数回调 模块
  5. 标准库类型string的基本功能和使用
  6. 【原创】Team Foundation Server 域环境迁移
  7. java微妙_编码Java时的10个微妙的最佳实践
  8. Https的前世今生
  9. java 读取 excel poi_Java中读取Excel功能实现_POI
  10. IDEA用maven创建springMVC项目和配置
  11. jQuery:ajax中form表单serialize()序列化方法
  12. mac如何判断本机有没有gpu_属牛人:属牛如何判断一段感情有没有未来
  13. 联想·云计算中心运维服务(1+X中级)教材出版
  14. 校赛第二轮 —— 国产电影保护月是国产电影之福 / 祸
  15. 《从0开始做运营[张亮]》——读书笔记
  16. dell服务器硬件参数提升速度,DELL R620服务器配置
  17. html怎样修改背景图片大小,css中如何设置背景图片的大小?
  18. 使用 css 创建 3D 效果的 书籍
  19. 使用JME3开发的Android 3D游戏 - 落樱之剑v2.2
  20. 合并 2 个有序列表(关键词:有序列表/有序/合并/归并)

热门文章

  1. vue,uniapp带有导航栏的轮播图swiper组件,滑动的同时点击导航栏切换,使异步滑动过程中位置发生改变,不能正常展示的问题解决(这里用uiniapp的swiper组件)
  2. Clickhouse的Join
  3. 实现内网映射的三种方式:
  4. JAVA中如何检查打印机状态
  5. Windows 8下无线连接总是受限的解决方法
  6. python字典keys排序_PYTHON字典排序
  7. SetWindowLongPtr之GWLP_USERDATA
  8. 【蓝桥杯】【回形取数】
  9. DataX 快速入门
  10. java链表的基本操作