P1126 機械人搬重物

2021-09-03 10:47:58 字數 1514 閱讀 4310

機械人移動學會(rmi)現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑$1.6公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個n \times mn×m的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有:向前移動11步(creep);向前移動2步(walk);向前移動33步(run);向左轉(left);向右轉(right)。每個指令所需要的時間為11秒。請你計算一下機械人完成任務所需的最少時間。

輸入格式:

第一行為兩個正整數n,m(n,m \le 50)n,m(n,m≤50),下面nn行是儲藏室的構造,00表示無障礙,11表示有障礙,數字之間用乙個空格隔開。接著一行有44個整數和11個大寫字母,分別為起始點和目標點左上角網格的行與列,起始時的面對方向(東ee,南ss,西ww,北nn),數與數,數與字母之間均用乙個空格隔開。終點的面向方向是任意的。

輸出格式:

乙個整數,表示機械人完成任務所需的最少時間。如果無法到達,輸出-1−1。

輸入樣例#1:複製

9 10

0 0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 0 1 0

0 0 0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0

0 0 0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0 0 0

0 0 0 1 1 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 1 0

7 2 2 7 s

輸出樣例#1:複製

12
#includeusing namespace std;

struct node

;char c;

const int n = 55;

int dx[4] = ;

int dy[4] = ;

int maze[n][n];

bool vis[20000];

int x,y,sx,sy,ex,ey,n,m,f,d,tim;

bool check(int x,int y)

int fun(int a,int b,int c)//雜湊函式每個位置及方向對應唯一的值

int bfs()

} return -1;

}int main()

int ans = bfs();

cout<

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 機械人搬重物

這道題本來沒啥好說的,但細節實在比較多,被坑了好多次。首先輸入的是格仔圖,需要轉化成點圖,具體操作是a i j a i 1 j 1 a i j 1 a i 1 j 1 最坑的乙個點在於,平時寫寬搜的時候,遇到出邊界或者不能訪問的點時,都是直接進入下一層迴圈 continue 但在這道題中,由於可以走...