每次都要判断人能不能走到箱子的一边,然后推箱子
dp[i][j][k]记录从k方向推到i,j的最小格数
#include<stdio.h>
#include<queue>
#include<string.h>
#define inf 0x3fffffff
using namespace std;
int dir[4][2]={0,1,1,0,0,-1,-1,0};
int map[10][10],dp[10][10][4],vis[10][10];
int n,m,Rx,Ry;
struct op
{
int x,y,step;
int rx,ry;
};
int judge(int x,int y)
{
if(x>=0&&x<n&&y>=0&&y<m&&map[x][y]!=1)
return 1;
......
阅读全文