#include
#include
using namespace std;
queueq1;
queueq2;
queueq3;
queueq4;
int step[21][21][4][5]=;//車輪方向,0=e,1=s,2=w,3=n; 顏色;
int dr[4]=;//東南西北;
int dc[4]=;
int sx,sy,tx,ty,di;
char d[4]=;
char colour[5]=;
char scolor,dire,tcolor;
char mig[21][21]=;
void readdate();
void init();
int fbs();
int canmoveto(int x,int y,int z,int dire);
int moveto1(int x,int d,int dire);
int moveto2(int y,int d,int dire);
int moveto(int z,int dire);
int main()
}for(i=0;i<5;i++)
}if(dire=='e')
else if(dire=='s')
else if(dire=='w')
else
for(i=1;i<=20;i++)//輸入地圖; }}
void init()
int fbs()
;while(!q1.empty())
}else
v1=moveto1(u1,d1,i);
v2=moveto2(u2,d1,i);
d2=moveto(d1,i);
if(v1==tx&&v2==ty&&step3==tcolor)
else if(step[v1][v2][d2][step3]==0)}}
}if(q1.empty()&&v1==0)
step[u1][u2][d2][step2]=step[u1][u2][d1][step2]+2;
t=step[u1][u2][d2][step2];
step3=step2;
q1.push(u1);
q2.push(u2);
q3.push(d2);
q4.push(step3);//老套路,進行儲存;}}
}int canmoveto(int x,int y,int z,int dire)//如果下一步是'.',便可以向前移動;
if(dire==0)
row=x+dr[dir];
col=y+dc[dir];
if(mig[row][col]=='.')
else
}else if(dire==1)
row=x+dr[dir];
col=y+dc[dir];
if(mig[row][col]=='.')
else
}else
return 0;
}
}int moveto1(int x,int d,int dire)//橫座標;
else
}int moveto2(int y,int d,int dire)//縱座標;
else
}int moveto(int z,int dire)//方向;
else
}else if(dire==1)
else
}else
本答案僅供參考,不得抄襲,希望你們盡早解決問題。
演算法練習 NOJ 1044 獨輪車
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 獨輪車的輪子上有紅 黃 藍 白 綠 依順時針序 5種顏色,在乙個如下圖所示的20 20的迷宮內每走乙個格仔,輪子上的顏色變化一次。獨輪車只能向前推或在原地轉向。每走一格或原地轉向90度均消耗乙個單位時間。現給定乙個起點 s 和...
NOJ1044 獨輪車 廣搜
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述獨輪車的輪子上有紅 黃 藍 白 綠 依順時針序 5種顏色,在乙個如下圖所示的20 20的迷宮內每走乙個格仔,輪子上的顏色變化一次。獨輪車只能向前推或在原地轉向。每走一格或原地轉向90度均消耗乙個單位時間。現給定乙個起點 s 和乙...
新手最快速學會獨輪車的方法
每個會騎的人都有自己的學習經歷,大家可能都不相同,我這裡說的只是方法之一,給新人參考。網上教程很多,包括找個走廊練習等,但這個不是最快的方式,因為新手無法保持直線,在走廊中經常要左扶牆右扶牆左撞牆右撞牆,反而進步的慢,但不失為一種安全的方法。另乙個毀人的是輔助輪,雖然能讓你快速學會前進後退,但讓你對...