Skip to content

windywater/AlgorithmLearning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

马走棋盘(HorseWalk)

在M*N的棋盘上,从一指定起点,以"走日"的方式走棋盘,找到一条能走完棋盘且没有重复格子的路线。

“马走日”说明在一点上有8种可走的方向,我使用的是DFS,深度优先法。类似于走迷宫,找到一个可走的方向就闷头走下去,如果发现无路可走了(比如已走过或越界),就退回上一步,尝试下一个方向。当然问题有可能是无解的,比如一个3*3的棋盘上从(0, 0)出发,不可能走完所有格子。

九宫格拼板(MovingPlate)

经典的小游戏,九宫格上有8个板块,打乱后逐步移动,使其恢复成初始排列。我使用的是BFS,广度优先法,算法中使用一个队列辅助计算。

  1. 将初始状态压入队列
  2. 取出队列头的状态,将其移出队列,若已是最终状态则返回
  3. 若不是最终状态,计算出下一步可形成的多个后续状态,压入队列
  4. 回到2

代码中还用到了unordered_set,存储出现过的状态,以免重复处理。

About

实现一些有意思的算法

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages