洛谷 P1126 機械人搬重物

2022-08-04 20:33:21 字數 2382 閱讀 8541

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

輸入格式:

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

輸出格式:

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

明顯是寬搜。

首先要把網格圖轉化為點圖,

其次對於每乙個狀態要儲存三個資訊行號列號方向。

注意走兩步的情況一定要注意不能越過障礙物。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9int n,m,sx,sy,dx,dy,ans=int_max,c[55][55][5],u=,v=;

10bool b[55][55

];11

char dr[11

];12

struct

cll13

tmp1,tmp2;

16 queueq;

17 mapmp;

18int

main()

1931 scanf("

%d%d%d%d%s

",&sx,&sy,&dx,&dy,&dr);

32 tmp1.x=sx,tmp1.y=sy,tmp1.dir=mp[dr[0

]];33

q.push(tmp1);

34 c[sx][sy][tmp1.dir]=0;35

while(!q.empty())

3649}50

else

51break;52

}53 tmp2.x=tmp1.x,tmp2.y=tmp1.y;//

תïò

54 tmp2.dir=(tmp1.dir+3)%4;55

if(c[tmp2.x][tmp2.y][tmp2.dir]==-1)56

60 tmp2.dir=(tmp1.dir+1)%4;61

if(c[tmp2.x][tmp2.y][tmp2.dir]==-1)62

66}67for(int i=0;i<=3;i++)

68if(c[dx][dy][i]!=-1

)69 ans=min(ans,c[dx][dy][i]);

70if(ans==int_max)

71 printf("

-1\n");

72else

73 printf("

%d\n

",ans);

74return0;

75 }

洛谷P1126 機械人搬重物

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

洛谷P1126 機械人搬重物

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

P1126機械人搬重物 洛谷

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