ac代码..可是官网还有两组没过..

```python

from collections import deque

class Node():

def __init__(self, arr, step, point):

self.arr = arr

self.step = step

self.point = point

def up(moveNode):

new_arr = Node(moveNode.arr, moveNode.step, moveNode.point)

new_arr.arr = list(new_arr.arr)

new_arr.arr[new_arr.point], new_arr.arr[new_arr.point - 3] = new_arr.arr[new_arr.point - 3], new_arr.arr[

new_arr.point]

new_arr.arr = ''.join(new_arr.arr)

new_arr.point -= 3

new_arr.step += 1

return new_arr

def down(moveNode):

new_arr = Node(moveNode.arr, moveNode.step, moveNode.point)

new_arr.arr = list(new_arr.arr)

new_arr.arr[new_arr.point], new_arr.arr[new_arr.point + 3] = new_arr.arr[new_arr.point + 3], new_arr.arr[

new_arr.point]

new_arr.arr = ''.join(new_arr.arr)

new_arr.point += 3

new_arr.step += 1

return new_arr

def left(moveNode):

new_arr = Node(moveNode.arr, moveNode.step, moveNode.point)

new_arr.arr = list(new_arr.arr)

new_arr.arr[new_arr.point], new_arr.arr[new_arr.point - 1] = new_arr.arr[new_arr.point - 1], new_arr.arr[

new_arr.point]

new_arr.arr = ''.join(new_arr.arr)

new_arr.point -= 1

new_arr.step += 1

return new_arr

def right(moveNode):

new_arr = Node(moveNode.arr, moveNode.step, moveNode.point)

new_arr.arr = list(new_arr.arr)

new_arr.arr[new_arr.point], new_arr.arr[new_arr.point + 1] = new_arr.arr[new_arr.point + 1], new_arr.arr[

new_arr.point]

new_arr.arr = ''.join(new_arr.arr)

new_arr.point += 1

new_arr.step += 1

return new_arr

def check(node):

if node == end:

return True

else:

return False

start = input()

end = input()

for i in range(9):

if start[i] == ".":

point = i

break

node = Node(start, 0, point)

visited = set()

queue = deque()

queue.append(node)

while queue:

moveNode = queue.popleft()

moveStr = moveNode.arr

if moveStr not in visited:

visited.add(moveStr)

point = moveNode.point

if check(moveNode.arr):

print(moveNode.step)

break

if moveNode.point > 2:

queue.append(up(moveNode))

if moveNode.point < 6:

queue.append(down(moveNode))

if moveNode.point != 0 and moveNode.point != 3 and moveNode.point != 6:

queue.append(left(moveNode))

if moveNode.point != 2 and moveNode.point != 5 and moveNode.point != 8:

queue.append(right(moveNode))

```

0.0分

1 人评分

python 九宫重排_[蓝桥杯][历届试题]九宫重排 (Python代码)(bfs+集合)相关推荐

  1. 历届试题+九宫重排+java_蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)...

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...

  2. 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...

  3. 蓝桥杯 历届试题 九宫重排

    问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  4. [蓝桥杯][历届试题]九宫重排-双向bfs和map标记

    题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  5. 蓝桥杯 历届试题 九宫重排

    问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  6. 蓝桥杯历届试题-九宫重排

    题目描述 如下面第一个图的九宫格中,放着  1~8  的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为: ...

  7. 算法练习/最小公倍数_蓝桥杯历届试题 核桃的数量

    这道题乍一看没反应过来,点了提示发现就是求三个数的最小共倍数,估计这是某一年蓝桥杯代码题的第一题. 最小公倍数的求法是:a和b的最小公倍数=a*b/a和b的最大共约数 所以变成了求最大公约数了,应用& ...

  8. java九宫排序,蓝桥杯 历届试题 九宫重排 java

    list = new ArrayList(); list.add(new Move(x1,y1,0,start));//添加初始状态进入list set.add(start);//添加初始字符串进入s ...

  9. 蓝桥杯 历届试题 九宫幻方

    问题描述   小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方 ...

最新文章

  1. 初中物理凸透镜成像动态图_初中物理:凸透镜成像、望远镜与显微镜的区别
  2. python调用自己写的函数_python调用自定义函数的实例操作
  3. Flask-----轻量级的框架,快速的搭建程序
  4. 启用MySQL的log-slow-queries(慢查询记录)
  5. JAVA校园二手交易平台
  6. IOS APP Store下载链接
  7. mkdir 创建目录命令
  8. ARM Cortex-M3/M4内核相关
  9. php 英文小写变大写,PHP_PHP英文字母大小写转换函数小结,每个单词的首字母转换为大写 - phpStudy...
  10. numpy多维数组获取指定矩形区域
  11. 框架—— Serverlet
  12. 华硕主板无盘启动bios设置_【华硕主板bios启动顺序】华硕主板bois启动项_华硕主板bios硬盘启动...
  13. 绝对值不等式的常见形式及解法
  14. Effective C++条款05:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)
  15. 游戏开发存档版本号的妙用
  16. Node.js背后的V8引擎优化技术
  17. 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记
  18. 微信小程序-模仿绘制聊天界面
  19. RKMPP库快速上手--(四)MPP编码入门
  20. 死神境界账号服务器,死神境界1.2.0正式版 附攻略/隐藏密码

热门文章

  1. PHP基础3--文件加载-错误处理
  2. WebGL on iOS8 最终等到了这一天
  3. SQL 2008 外网访问说明
  4. 2793 [Poi2012]Vouchers
  5. WSS 扩展文件夹的属性--如何给文件夹添加扩展字段
  6. QuickWAP 2005企业WAP网站系统简介
  7. css--css选择器,伪类
  8. C++入门经典-例7.8-const对象,标准尺寸
  9. 将程序添加到自动启动
  10. Mac 10.11系统下cocoaPods安装注意事项