题目
在X轴上有N个点[1....N],有一个机器人初始在X轴上的P位置,机器人的目标是走到同样在X轴上的Q位置。机器人每次可以向左或向右走一个单位长度,但是机器人只能走K步,求机器人在K步之内是否能到达Q位置。
解题思路
根据全排列的思想,求出机器人走K步能够达到的所有位置,找出其中是否有Q位置即可。
代码
boolean rec(int N,int P,int Q,int index,int K){
//机器人走完了K步
if(K == 0){
//走完了K步在Q位置
if(index == Q){
return true;
}
//走完了K步不在Q位置
return false;
}
//机器人在最左边,只能向右走
if(index == 1){
return rec(N,P,Q,index+1,K-1);
}
//机器人在最右边,只能向左走
if(index == N){
return rec(N,P,Q,index-1,K-1);
}
//机器人在中间位置,可以向左或者向右走
return rec(N,P,Q,index-1,K-1) || rec(N,P,Q,index+1,K-1);
}