POJ-2488(回溯+剪枝)

该博客探讨了POJ-2488问题,重点在于如何利用回溯算法结合剪枝策略,寻找满足条件的字典序最小的解。内容详细介绍了在搜索过程中确保字典序最小的关键点。
摘要由CSDN通过智能技术生成

与经典的骑士问题不同之处在于:因为要求字典序最小,所以搜索时我们要保证下一个可以遍历到的点是字典序最小的即可


#include <cstdio>
#include <cstring>

int  M, N;              //M is row(1,2,...), N is col(A,B,...)
bool canBeStart[26][26];//record whether [i][j] can be start
int  total, vis[26][26];//total = M * N, record [i][j]'s visit time(0 ~ total-1)
char path[26 * 2 + 1];  //total path

const int MOVE[8][2] = {
    {-1, -2}, {1, -2},
    {-2, -1}, {2, -1},
    {-2, 1}, {2, 1},
    {-1, 2}, {1, 2},
    
};
bool isOutOfBounds(int r, int c)
{
    return r < 0 || r >= M || c < 0 || c >= N;
}
bool dfs(int row, int col, int time)
{    
    vis[row][col] = time++;
    if(time == total) retur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值