>Link
ybtoj立体推箱子
>解题思路
很感动因为一不小心memset里面写成了sizeof(0)拉着zzl和hky改了一个上午,后来还是hky发现的错误,一整个就很烦恼🤯
跟普通的bfs差不多,但是转移到下一步的时候要特殊处理一下,这样才能处理不同的立体情况
一共有三种状态:①立着 ②横着躺 ③竖着躺
每个情况上下左右转动后的样子都不同,所以需要打一下表预处理如何转动
>代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define N 510
using namespace std;
const int p[4][4] = {
{
}, {
3, 2, 2, 3}, {
2, 1, 1, 2}, {
1, 3, 3, 1}};
const int x1[4][4] = {
{
}, {
-2, 0, 0, 1}, {
-1, 0, 0, 1}, {
-1, 0, 0, 2}};
const int y1[4][4] = {
{
}, {
0, -2, 1, 0}, {
0, -1, 2, 0}, {
0, -1, 1,