蓝桥杯算法入门(Python) 课件 6-7BFS判重.pptxVIP

  • 0
  • 0
  • 约2.39千字
  • 约 6页
  • 2026-08-24 发布于山东
  • 举报

蓝桥杯算法入门(Python) 课件 6-7BFS判重.pptx

罗勇军6.7BFS判重蓝桥杯算法入门

BFS判重2BFS=队列BFS:逐步扩展下一层,把扩展出的下一层状态放进队列中处理。如果这些状态有相同的,只需搜一次,只需要进入队列一次。必须判重。

例题6.15:九宫重排LanqiaoOJ261问题描述:下图的九宫格中,放着1~8的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成右图所示的局面。把上图的局面记,把下图局面记为123.46758。已知九宫初态和终态,求最少经过多少步移动可以到达,如果无法到达,输出-1。输入:输入第一行包含九宫的初态,第二行包含九宫的终态。输出:输出最少步数。不能到达则输出?1。3

思路题目求从初态到终态的最少步数,是典型的BFS最短路。让卡片移动到空格比较麻烦,改为让空格上下左右移动,就简单多了。空格的每一步移动,可能有2、3、4种新局面,如果按3种算,移动到第15步,就有3151千万种局面,队列放不下。不过,其实局面总数仅有9!=362880种,队列放得下,只要判重,不让重复的局面进入队列即可。4

用set判重5fromcollectionsimportdequedx=[-1,0,1,0]#上下左右四个方向dy=[0,1,0,-1]classNode:

文档评论(0)

1亿VIP精品文档

相关文档