題目
思路,和經典的迷宮最短路徑思路一樣,只是細節變得更多,與普通的最短路徑問題相比,因為要考慮到轉向消耗的時間,哪怕是同乙個方格不同的方向最終消耗的時間也會不同。
#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 的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方...