洛谷P1126 機械人搬重物

2021-10-01 20:51:24 字數 1489 閱讀 2848

題目

思路,和經典的迷宮最短路徑思路一樣,只是細節變得更多,與普通的最短路徑問題相比,因為要考慮到轉向消耗的時間,哪怕是同乙個方格不同的方向最終消耗的時間也會不同。

#include

#include

#include

#include

using

namespace std;

struct coordinate

;const

int max_size =50;

coordinate start, goal;

coordinate inital_bot_grid[4]

=,,,

};//機械人需要佔的格數

coordinate bot_grid[4]

;//存放該點機械人占用的格數

coordinate moving_dir[4]

=,,,

};//機械人可移動的四個方向,

queue que;

//順時針順序 小鍵盤2 4 8 6

int n, m;

int maze[max_size]

[max_size]

;//迷宮

int cnt_time[max_size]

[max_size]

;//存放到達該格仔花費的最短時間

char tmp_dir;

int bot_dir[max_size]

[max_size]

;//存放機械人面對的方向

bool arrival =

false

;int

changedirection

(int tmp_dir,

int target_dir)

//更改方向,順時針和逆時針各模擬一遍,返回較短的次數。

for(

int i = tmp_dir; i != target_dir; i--

, cnt2++

)return

(cnt1 <= cnt2)

? cnt1 : cnt2;

}bool

updatebotgrid

(coordinate pos)

//更新機械人的位置並且判斷是否出界或者遇到障礙

return

true;}

intbfs()

que.

pop();

coordinate tmp;

for(

int i =

0; i <

4; i++

)for

(int j =

1; j <=

3; j++)}

else

//機械人越界,後面的情況也必然是越界的,跳出迴圈

break;}

}}}int

main()

else

return0;

}

洛谷P1126 機械人搬重物

機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑1.6公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個n m的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有 向前移動1...

洛谷P1126 機械人搬重物

機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑 1.6 公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個 n m 的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有 向...

P1126機械人搬重物 洛谷

機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑 1.6 公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個 n mn times mn m 的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方...