0
我正試圖解決導航網格系統內的芭比娃娃有趣的問題。最初,芭比在[0,0]的位置,意味着在X和Y軸的交點。芭比有三項運動,其中'F'爲前鋒,'R'爲右轉(90度),'L'爲左轉(90度)。說,如果我通過方向字符串「FF」,位置應該是[0,2]。我解決問題,代碼的當前狀態爲如下,如何瀏覽網格系統中的芭比娃娃?
public static void barbiePosition(String str){
if(str == null || str.length() == 0)
return;
int [] initial = {0,0};
boolean xPos = false, xNeg = false, yPos = true, yNeg = false;
char[] ch = str.toCharArray();
for(char c: ch){
// the initial postion of the robot is towards the positive Y axis
if(c == 'L'){
if(xPos){
xPos = false;
yPos = true;
}
else if (xNeg){
xNeg = false;
yNeg = true;
}
else if(yPos){
xNeg = true;
yPos = false;
}
else if (yNeg){
yNeg = false;
xPos = true;
}
}
else if (c == 'R'){
if(xPos){
xPos = false;
yNeg = true;
}
else if (xNeg){
yPos = true;
xNeg = false;
}
else if(yPos){
yPos = false;
xPos = true;
}
else if (yNeg){
yNeg = false;
xNeg = true;
}
}
else if (c == 'F'){
if(xNeg){
initial[0] -= 1;
}
else if (xPos){
initial[0] += 1;
}
else if (yNeg){
initial[1] -=1;
}
else if(yPos){
initial[1] += 1;
}
}
}
System.out.println(Arrays.toString(initial));
}
的事情是我不爲它的解決方案感到難看。有沒有更好的方法來設計算法 ?
首先,如果這是一個網格,最好的解決方案是有一個二維數組來表示列(您的向前方向),另一個表示行(您向右/向左) –
Java數組的維度是固定的初始化,所以,我認爲它可能不是正確的數據結構來處理這個問題,並會在大量的方向上失敗。 – Arefe