根据数据范围n=4,直接考虑dfs,对于目前图上已走的步数,进行循环反悔,然后进行dfs看下能不能走完4∗4,如走完跳出循环输出答案即可
#include <bits/stdc++.h>
using namespace std;
#define N 100005
int a[10][10];
在一个 4×4 的方格网中,一个机器人按照预设的巡逻指令移动。每个格子都被赋予一个访问顺序编号,编号从 1 开始。机器人已经正确执行了一部分指令,某些格子尚未被访问(用 0 表示)。机器人每次移动只能向上下左右四个方向之一前进一格,且不能进入已经访问过的格子。
已知当前的指令序列是合法且连续的:即编号为 1,2,…,m 的格子依次相邻,且 m≥1。如果执行完当前指令后,无法从最后停留的格子出发继续访问剩余所有 16 个格子,则允许撤销最后若干条指令,即从指令序列的末尾开始删除,直到从新的终点出发可以找到一条访问所有剩余格子的路径。每次撤销一条指令意味着将最后一步到达的格子恢复为未访问状态,并将序列长度减一。
你需要计算最少需要撤销多少条指令,才能从撤销后的终点出发,规划出一条能遍历剩余所有未访问格子的路径。
约束:网格大小固定为 4×4,初始指令序列长度 m 满足 1≤m≤16,矩阵中的数字均在 0 到 16 之间,且保证给出的序列是合法的相邻路径。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.