Ural 1298 Knight 题解
题意
给定一个$n\times n(1\le n\le8)$的国际象棋棋盘和一个骑士(基本上相当于中国象棋的马),问可否用经过每个格子$1$次。如果可以,输出路径,否则输出IMPOSSIBLE。
题解
考虑回溯。暴力程序十分好写,但是会超时。
可以用启发式优化。
设当前点为$(x,y)$,可到达的点为$(x’,y’)$。优先选择$(x’,y’)$状态种数少的回溯,即可以转移的格子的数量少。
这样优化后就可以过了。
Tip: 优化后很快,为0.015s。
程序
1 | // #pragma GCC optimize(2) |