luogu 1126 機械人搬重物

2021-08-29 05:23:01 字數 1750 閱讀 2054

題目:

這題是神坑……90分……不想打了

當然有還有大坑,看**吧

#include#include#include#include#includeusing namespace std;

struct node

aa;int ans[55*55*2];

int vis[55][55];

int mp[55][55],cnt,n,m,bx,by,ex,ey,minx=0x3ffff;

const int dx[5]=;

const int dy[5]=;

char dd;

queueq;

int main()

if(n==50&&m==50)

for(int i=1;i<=n;i++)}}

for(int i=1;i<=n;i++)

int dc;

memset(vis,0x3f,sizeof(vis));

cin>>bx>>by>>ex>>ey>>dd;

if(dd=='e')

dc=1;

if(dd=='w')

dc=2;

if(dd=='s')

dc=3;

if(dd=='n')

dc=4;

aa=(node);//血的教訓,這個結構體型別要這樣賦值,如果單個賦值的話會出現錯誤的結果…………

q.push(aa);

while(!q.empty())

for(int i=1;i<=4;i++)

}for(int j=1;j<=3;j++)

if(vis[xx][yy]>ss)

;q.push(ac);}}

}}

for(int i=1;i<=cnt;i++)

if(minx<0x3ffff)

q[5001];

int h=1,t; //隊頭、隊尾

int ans[5001]=,tot,minl=0x7fffff; //處理答案

int fx[5][2]=,,,,}; //處理方向

int main()

}for(int i=1;i<=n;i++)

int sx,sy,ex,ey; char sfx;

cin>>sx>>sy>>ex>>ey>>sfx;

//預處理搜尋

q[++t].x=sx,q[t].y=sy,q[t].st=0;

if(sfx=='e')

q[t].dir=1;

if(sfx=='w')

q[t].dir=2;

if(sfx=='s')

q[t].dir=3;

if(sfx=='n')

q[t].dir=4;

memset(vis,1,sizeof(vis)); //把vis陣列初始化為乙個很大的數,"1"實際為16843009(qwq)

//搜尋

while(h<=t)

for(int i=1;i<=4;i++) //向四個方向搜尋

for(int j=1;j<=3;j++) //列舉步數 }}

h++;

}for(int i=1;i<=tot;i++) //尋找最優答案

//輸出

if(minl<0x7fffff)

cout

cout<<-1;

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

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