題目:
這題是神坑……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的網格,有些格仔為不可移動的障礙。機械人的中心總是在格點上,當然,機械人必須在最短的時間內把物品搬運到指定的地方。機械人接受...