這道題本來沒啥好說的,但細節實在比較多,被坑了好多次。
首先輸入的是格仔圖,需要轉化成點圖,具體操作是a[i][j]=a[i-1][j-1]=a[i][j-1]=a[i-1][j]=1
最坑的乙個點在於,平時寫寬搜的時候,遇到出邊界或者不能訪問的點時,都是直接進入下一層迴圈(continue),但在這道題中,由於可以走1~3步,那麼當路徑上出現障礙時,則不能進行下一輪迴圈,需要break。
#include
#define max 55
using namespace std;
int mod(int x)
const int movx = , movy = ;
int a[max][max];
bool vis[max][max][5];
int n, m;
pt st, ed;
void bfs()
for(int i = 1; i <= 3; i++)
if(vis[u][v][t.dir])
vis[u][v][t.dir] = true;
q.push(pt(u, v, t.dir, t.step+1));
}if(!vis[t.x][t.y][mod(t.dir+1)])
if(!vis[t.x][t.y][mod(t.dir-1)])
}if(!flag)
}
return 0;
P1126 機械人搬重物
機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑1.6公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個n m的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有 向前移動1...
P1126 機械人搬重物
includeusing namespace std const int inf 1000000000 int a 55 55 int sx,sy,ex,ey int n,m int mincnt inf int vis 100 100 mapmp struct node void bfs node...
P1126 機械人搬重物
機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑 1.6公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個n times mn m的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受...