description:
機械人從起點開始走,每次可以轉彎和前進1到三步,不能經過障礙物,問最少要多少時間到達目的地。
input:
迷宮,起終點,初始方向
output:
answer
analysis:
就是bfs,還是幾個要素,狀態的設計,狀態的判重,狀態的轉移。有乙個坑點是點和線的轉換。第一次用了array模板,還是挺方便的。
#define _crt_secure_no_warnings
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define _for(i,a,b) for(int i=(a);i<(b);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
typedef long long ll;
const int inf = 1 << 30;
const int maxn = 55;
const int mod = 1e9 + 7;
const double eps = 1e-6;
const double pi = acos(-1);
struct state ;
int dr = , dc = ;
int n, m,pic[maxn][maxn],vis[maxn][maxn][4],sr,sc,tr,tc,sdir;
int block[maxn][maxn];
arraypre[maxn][maxn][4];
char cc;
int ch2dir(char ch)
bool ok(int r, int c,int dir,int prer,int prec)
return true;
}void print(int r, int c, int dir)
int bfs()
} sdir = ch2dir(cc);
q.push(state);
vis[sr][sc][sdir] = 1;
pre[sr][sc][sdir] = ;
while (q.size())
for (int step = 1; step <= 3; ++step) );
vis[nr][nc][now.dir] = 1;
pre[nr][nc][now.dir] = ;
}} for (int dd = -1; dd <= 1; dd += 2) );
vis[now.r][now.c][ndir] = 1;
pre[now.r][now.c][ndir] = ;
}} }
return -1;
}int main()
cin >> sr >> sc >> tr >> tc >> cc;
cout << bfs() << endl;
} return 0;
}
洛谷P1126 機械人搬重物
機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑1.6公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個n m的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有 向前移動1...
洛谷P1126 機械人搬重物
機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑 1.6 公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個 n m 的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受的指令有 向...
P1126機械人搬重物 洛谷
機械人移動學會 rmi 現在正嘗試用機械人搬運物品。機械人的形狀是乙個直徑 1.6 公尺的球。在試驗階段,機械人被用於在乙個儲藏室中搬運貨物。儲藏室是乙個 n mn times mn m 的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方...