Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我正在尝试解决在网格系统内导航芭比娃娃的有趣问题。最初,芭比娃娃处于[0,0]位置,表示在X轴和Y轴的交点处。芭比娃娃有3种动作,“ F”代表前进,“ R”代表右转(90度),“ L”代表左转(90度)。说,如果我通过字符串“ FF”的方向,则位置应为[0,2]。我解决了这个问题,代码的当前状态如下,
事情是,我只是没有解决方案,因为感觉很难看。有没有更好的办法
设计算法?
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我正在尝试解决在网格系统内导航芭比娃娃的有趣问题。最初,芭比娃娃处于[0,0]位置,表示在X轴和Y轴的交点处。芭比娃娃有3种动作,“ 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));
}
事情是,我只是没有解决方案,因为感觉很难看。有没有更好的办法
设计算法?
最佳答案
在您的应用程序中构成“前进”的原因是前一步的作用。
前进只是意味着您重复最后一步。
如果前进是您的第一步,则需要选择一个约定,上面写着“芭比起初是向右移动”。
10-05 19:36